私はいくつかのものを見つけることができる研究のために少なくとも4時間を無駄にしました。私はログイン画面の後に起動するメインメニューのアクティビティを持っています。私はgridview、またはlistview kindを更新し、それを一覧表示して受信トレイのメールを表示したいのですが、そのうちの1つをクリックすると、新しいアクティビティが起動し、送信者、件名、本文などの情報がtextviewに表示されます。javamail android fecthing eメール?
これは私が見つけたソースの1つです:Are there any good short code examples that simply read a new gmail message? OPと質問に答えた人が提供するものを含めて両方の答えを試してみました。彼らの両方は働いていないとidkなぜ?
エラーメッセージ:
05-16 18:35:55.965 1741-1741/app.mailbox E/readMail: Not connected
java.lang.IllegalStateException: Not connected
at com.sun.mail.imap.IMAPStore.checkConnected(IMAPStore.java:1992)
at com.sun.mail.imap.IMAPStore.getFolder(IMAPStore.java:1775)
at app.mailbox.GMailReader.readMail(GMailReader.java:58)
at app.mailbox.Menu.onCreate(Menu.java:32)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
05-16 18:35:56.029 1741-1780/app.mailbox E/EGL_emulation: tid 1780: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
これは右のいくつかのことを入れた後のコードです:
package app.mailbox;
import android.util.Log;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
public class GMailReader extends javax.mail.Authenticator {
private static final String TAG = "GMailReader";
private String mailhost = "imap.gmail.com";
private Session session;
private Store store;
public GMailReader(String user, String password) {
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imaps");
props.setProperty("mail.imaps.host", mailhost);
props.put("mail.imaps.auth", "true");
props.put("mail.imaps.port", "993");
props.put("mail.imaps.socketFactory.port", "993");
props.put("mail.imaps.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.imaps.socketFactory.fallback", "false");
props.setProperty("mail.imaps.quitwait", "false");
if (props == null){
Log.e(TAG, "Properties are null !!");
}else{
Log.d(TAG, "Store: "+props.getProperty("mail.store.protocol"));
Log.d(TAG, "Host: "+props.getProperty("mail.imap.host"));
Log.d(TAG, "Authentication: "+props.getProperty("mail.imap.auth"));
Log.d(TAG, "Port: "+props.getProperty("mail.imap.port"));
}
try {
session = Session.getDefaultInstance(props, null);
store = session.getStore("imaps");
store.connect(mailhost, user, password);
Log.i(TAG, "Store: "+store.toString());
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
public synchronized Message[] readMail() throws Exception {
try {
Folder folder = store.getFolder("Inbox");
folder.open(Folder.READ_ONLY);
Message[] msgs = folder.getMessages();
return msgs;
} catch (Exception e) {
Log.e("readMail", e.getMessage(), e);
return null;
}
}
}
も私がしたい活動からこのクラスを呼び出すときに非同期タスクを使用する必要がありますリストメール?
あなたはそれについて完全に正しいです。私がそれをやっている理由は、ちょっと短いです。私はどこでもチュートリアルや実例を見つけることができません。 これを更新してよろしくお願いいたします – Airborne
[JavaMail FAQ](https://javaee.github.io/javamail/FAQ)と[JavaMail Webサイト](https:// javaee)には、数多くの基本的なJavaMailの例があります.github.io/javamail/#samples)。 –