0

メールアカウントからのメッセージをリッスンし、特定のアクションを実行するアプリを開発しています。そのために、私はこれを使用します:

public class EmailListener implements FolderListener {

public void registerEmailListener(boolean register) {
ServiceBook sb = ServiceBook.getSB();
ServiceRecord[] srs = sb.findRecordsByCid("CMIME");
if (srs != null) {
ServiceRecord sr;
ServiceConfiguration sc;
/* unregister all email listener  to avoid duplicate listeners */
desregisterAllEmailListeners(srs);
for (int i = srs.length - 1; i >= 0; --i) {
sr = srs[i];
try {
sc = new ServiceConfiguration(sr);
registerEmail(sc, register);

} catch (Exception e) {
e.printStackTrace();
}
}

}
}

private void registerEmail(ServiceConfiguration sc, boolean register) {
Session s = Session.getInstance(sc);
if (s != null) {
Folder[] folders = s.getStore().list();
for (int foldercnt = folders.length - 1; foldercnt >= 0; --foldercnt) {
Folder f = folders[foldercnt];
// If the folder doesn't have the service book for this email, we do not want to register it
if (f.getFullName().indexOf(sc.getEmailAddress()) >= 0) {
recurse(f, register);
}
}
} 
}
private void recurse(Folder f, boolean add) {
if (f.getType() == Folder.INBOX) {

f.removeFolderListener(this);
if (add) {
f.addFolderListener(this);
}
}
Folder[] farray = f.list();
for (int fcnt = farray.length - 1; fcnt >= 0; --fcnt) {
recurse(farray[fcnt], add);
}
}

public void desregisterAllEmailListeners(ServiceRecord[] srs) {
ServiceRecord sr;
ServiceConfiguration sc;
for (int i = srs.length - 1; i >= 0; --i) {
sr = srs[i];
try {
sc = new ServiceConfiguration(sr);
registerEmail(sc, false);
} catch (Exception e) {
e.printStackTrace();
}
}
}

public void messagesAdded(final FolderEvent e) {

....

}

....

}

メールが来ると、messageAdded を実行し、特定のアクションを実行します。問題は、一部のデバイスでは機能し、別のデバイスでは機能しないことです。すべての場合に電子メール リスナーを正しく登録しますが、messageAdded を実行しない場合もあります。どうしたの?

9300 OS 6.0 および OS 5.0 および 9220 OS 7.1 で動作します 9320 OS 7.1、9380 OS 7.1 および 9800 OS 6.0 では動作しません

どうもありがとうございました。

4

1 に答える 1

1

はい!!、messageAdded....debugging を実行します。一部のデバイスでログが表示されない理由がわかりません....

教訓は次のとおりです。

于 2013-03-04T12:19:12.053 に答える