2017-02-27 15 views
1

私はすべての電子メールを読んで、リストビューで表示したいアプリケーションを作成しています。私は検索していますが、適切な方法を見つけることができませんでした。私は以下のコードを試してみました:アンドロイドでプログラムで電子メールを読む方法は?

private static final String[] PROJECTION = new String[] { 
ContactsContract.CommonDataKinds.Email.CONTACT_ID, 
ContactsContract.Contacts.DISPLAY_NAME, 
ContactsContract.CommonDataKinds.Email.DATA 
}; 

ContentResolver cr = getContentResolver(); 
Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,   PROJECTION, null, null, null); 
if (cursor != null) { 
try { 
    final int contactIdIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.CONTACT_ID); 
    final int displayNameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); 
    final int emailIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA); 
    long contactId; 
    String displayName, address; 
    while (cursor.moveToNext()) { 
     contactId = cursor.getLong(contactIdIndex); 
     displayName = cursor.getString(displayNameIndex); 
     address = cursor.getString(emailIndex); 

    } 
} finally { 
    cursor.close(); 
    } 
} 

しかし、実際のメールを読んでみるとどうなりますか?何か方法はありますか? Android APIはこれを公開していますか?もう1つ、私は電子メールを受け取るアプローチの下で見つけた1つの場所で

ContentResolver resolver = getContentResolver(); 
Uri uriGmail = Uri.parse("content://gmail/"); 
Cursor cursor = resolver.query(uriGmail, null, null, null, null); 

カーソルはnullを返します。私が信じることは、Androidデバイスから電子メールを読む方法がないということです。メールがそのアプリのローカルストレージ(データベース)に保存されることがあります(Gmailアプリと言う)。私はさらに、下記のリンクに記載されているようにAndroidのドキュメントを調べるが、方法を見つけることができなかった。 https://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html

ありがとうございます。

答えて

0
Properties props = new Properties(); 
    //IMAPS protocol 
    props.setProperty(“mail.store.protocol”, “imaps”); 
    //Set host address 
    props.setProperty(“mail.imaps.host”, imaps.gmail.com); 
    //Set specified port 
    props.setProperty(“mail.imaps.port”, “993″); 
    //Using SSL 
    props.setProperty(“mail.imaps.socketFactory.class”, “javax.net.ssl.SSLSocketFactory”); 
    props.setProperty(“mail.imaps.socketFactory.fallback”, “false”); 
    //Setting IMAP session 
    Session imapSession = Session.getInstance(props); 

Store store = imapSession.getStore(“imaps”); 
//Connect to server by sending username and password. 
//Example mailServer = imap.gmail.com, username = abc, password = abc 
store.connect(mailServer, account.username, account.password); 
//Get all mails in Inbox Forlder 
inbox = store.getFolder(“Inbox”); 
inbox.open(Folder.READ_ONLY); 
//Return result to array of message 
Message[] result = inbox.getMessages(); 
+0

、これを試してみてくださいものであり、さ特定のライブラリのいくつかの種類またはそれらはアンドロイドのsdkのAPIで利用できますか? –

0

私はすでに同様けどアンドロイドスタジオセッションとstore.My質問のようなクラスを認識していないことを試してみました

ダウンロードのmail.jar https://code.google.com/archive/p/javamail-android/downloads

new MyAsynk().execute(); 

    public class MyAsynk extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... params) { 

      Properties props = new Properties(); 
      props.setProperty("mail.store.protocol", "imaps"); 
      try { 
       Session session = Session.getInstance(props, null); 
       Store store = session.getStore(); 
       store.connect("imap.gmail.com", "[email protected]", "password"); 
       Folder inbox = store.getFolder("INBOX"); 
       inbox.open(Folder.READ_ONLY); 
       javax.mail.Message msg = inbox.getMessage(inbox.getMessageCount()); 
       javax.mail.Address[] in = msg.getFrom(); 
       for (javax.mail.Address address : in) { 
        System.out.println("FROM:" + address.toString()); 
       } 
       Multipart mp = (Multipart) msg.getContent(); 
       BodyPart bp = mp.getBodyPart(0); 
       System.out.println("SENT DATE:" + msg.getSentDate()); 
       System.out.println("SUBJECT:" + msg.getSubject()); 
       System.out.println("CONTENT:" + bp.getContent()); 
      } catch (Exception mex) { 
       mex.printStackTrace(); 
      } 
      return null; 
     } 
    } 
関連する問題