2013-02-15 69 views
0

我正在開發一個應用程序,用於監聽來自電子郵件帳戶的消息並執行特定操作。爲此,我使用這個:AddFolderListener在某些設備中工作,但在另一個設備中不起作用

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

非常感謝您doesn't工作。

回答

1

是的,它執行messageAdded ....調試。我不知道爲什麼不在某些設備上顯示日誌......

道德是: 不要只信任logEvent,使用這個和調試工具,都!

相關問題