自动在Android上发送电子邮件

时间:2015-03-17 00:35:21

标签: android email gmail

为了在没有用户干预的情况下从我的设备(Nexus7和三星galaxy S5)发送电子邮件,我遵循了 Send Email in Service (without prompting user)

http://www.jondev.net/articles/Sending_Emails_without_User_intervention_(no_Intents)_in_Android

两者都正确发送了电子邮件,但我总是以弹出消息结束 我的设备上的“Gmail停止了”,这对我的应用程序的用户来说并不是非常有用,因此这两种解决方案都无法使用。

是否有其他解决方案,或者如何摆脱此错误?

Logcat显示以下错误:

03-17 11:44:32.324: I/Gmail(2797): Sending provider changed intent: Intent { act=android.intent.action.PROVIDER_CHANGED dat=content://gmail-ls/unread/^i (has extras) }
03-17 11:44:32.341: I/Gmail(2797): Sending provider changed intent: Intent { act=android.intent.action.PROVIDER_CHANGED dat=content://gmail-ls/unread/^iim (has extras) }
03-17 11:44:32.365: I/Gmail(2797): notifyAccountChanged
03-17 11:44:32.368: I/Gmail(2797): getAccountsCursor
03-17 11:44:32.369: W/Gmail(2797): Sync complete for account: account:-654877552
03-17 11:44:32.379: W/GAV2(2797): Thread[SyncAdapterThread-1,5,main]: dispatch call queued.  Need to call GAServiceManager.getInstance().initialize().
3-17 11:44:32.380: E/AndroidRuntime(2797): FATAL EXCEPTION: SyncAdapterThread-1
03-17 11:44:32.380: E/AndroidRuntime(2797): Process: com.google.android.gm, PID: 2797
03-17 11:44:32.380: E/AndroidRuntime(2797): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.getScheme()' on a null object reference
03-17 11:44:32.380: E/AndroidRuntime(2797):     at android.content.ContentResolver.openInputStream(ContentResolver.java:630)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.aV.b(SourceFile:6237)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.bh.HC(SourceFile:4213)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.bh.<init>(SourceFile:4186)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.bo.a(SourceFile:3898)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.Operations.b(SourceFile:628)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.aV.a(SourceFile:5936)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.MailSync.a(SourceFile:899)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.MailEngine.a(SourceFile:2432)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.MailEngine.a(SourceFile:2129)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.bp.a(SourceFile:127)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.common.b.onPerformSync(SourceFile:33)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at com.google.android.gm.provider.bp.onPerformSync(SourceFile:82)
03-17 11:44:32.380: E/AndroidRuntime(2797):     at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
03-17 11:44:32.417: I/NotifUtils(2797): Validating Notification, mapSize: 1 getAttention: true ignoreUnobtrusive: false

1 个答案:

答案 0 :(得分:0)

您是否能够获得导致Gmail停止的错误的堆栈跟踪?如果您使用的是Android Studio,它将位于logcat

您可能需要通过选择日志记录区域最右侧的下拉列表并选择无过滤器来删除日志过滤器。

这将帮助您解决导致此次崩溃的错误。

相关:我建议将用于发送电子邮件的逻辑移至服务器,您可以在其中更好地监控传送,垃圾邮件合规性(在美国)和使用率。如果您不需要以用户身份发送电子邮件,这可能是更好的解决方案。