针对KitKat的GMail在发送不是图片或video的附件时崩溃

更新3:看起来像所有这些都是由OTA升级到KitKat 4.4引起的。 强制停止和清除GMail应用程序的数据解决了这个问题。 OTA更新不是一个用户友好的结果。

更新2:崩溃纯粹是由于在Android 4.4 KitKat中处理新的Gmail文件。 当添加任何其他文件types作为附件比图像或video,GMail发送电子邮件时崩溃。 为什么要删除其应用程序的function

任何人都知道在哪里报告GMail的错误? 我可以通过使用GMail(不是我自己的代码)重现崩溃:

  1. 撰写新邮件

  2. 添加附件(只有2个选项:“附加图像”或“附加video”)

  3. select其中之一。

  4. select一个文件浏览器(如ES文件浏览器)来select一个zip / apk / …(或其他文件不是图像/video)

  5. Gmail在发送邮件时崩溃。

更新:

我的Nexus 4运行官方(OTA)KitKat发生崩溃。 然而,在我的三星Galaxy S2运行CM10.2每晚(果冻豆)上运行相同的代码工作正常。 它也适用于运行4.0.4的三星Galaxy Tab 2。

KitKat上的GMail是否被破解?

Nexus 4有GMail版本4.6.1(920375)Galaxy S2有GMail版本4.6(836823)

原来的问题(解决,见更新3):

我的Android应用程序中有以下代码:

Intent email = new Intent(Intent.ACTION_SEND); email.putExtra(Intent.EXTRA_EMAIL, new String[]{"xxx@gmail.com"}); email.putExtra(Intent.EXTRA_SUBJECT, "MetroNavigator data"); email.setType("application/zip"); email.putExtra(Intent.EXTRA_TEXT, "This email contains tracking data generated by the MetroNavigator app."); email.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath())); startActivity(Intent.createChooser(email, "Choose a mail client to send the data:")); 

这似乎很好,因为zip文件被正确地添加到电子邮件(你可以看到,因为GMail提到的文件大小,如果文件path是错误的,它不会)。

截图:(我没有10代表,所以不能embedded) http://img.androidcookie.com/android/UkMQZLG.png

但是,当发送邮件时,GMail崩溃,给出以下输出:

 11-23 12:22:38.451 31900-32089/? E/AndroidRuntime﹕ FATAL EXCEPTION: SyncAdapterThread-1 Process: com.google.android.gm, PID: 31900 java.lang.NullPointerException at android.content.ContentResolver.openInputStream(ContentResolver.java:613) at com.google.android.gm.provider.MailEngine$PublicMailStore.getInputStreamForUploadedAttachment(MailEngine.java:5591) at com.google.android.gm.provider.MailSync$AttachmentPartSource.newInputStream(MailSync.java:3968) at com.google.android.gm.provider.MailSync$AttachmentPartSource.<init>(MailSync.java:3941) at com.google.android.gm.provider.MailSync$ProtoOperationSink.messageSavedOrSent(MailSync.java:3708) at com.google.android.gm.provider.Operations.provideNormalOperations(Operations.java:586) at com.google.android.gm.provider.MailEngine$PublicMailStore.provideOperations(MailEngine.java:5290) at com.google.android.gm.provider.MailSync.nextSyncRequest(MailSync.java:853) at com.google.android.gm.provider.MailEngine.runSyncLoop(MailEngine.java:2217) at com.google.android.gm.provider.MailEngine.sync(MailEngine.java:2014) at com.google.android.gm.provider.MailEngine.performBackgroundSync(MailEngine.java:1936) at com.google.android.gm.provider.MailSyncAdapterService$SyncAdapterImpl.onPerformLoggedSync(MailSyncAdapterService.java:58) at com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:33) at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259) 

我已经阅读了关于附件的其他问题,您不能从内部存储上传附件,但我使用

 Environment.getExternalStorageDirectory().toString(); 

作为每个path的基础,我已经包括在内

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

在我的清单。 这也是GMail应用崩溃,而不是我自己的。 有任何想法吗? 这是GMail中的错误吗?

会喜欢这里的一些input。

提前致谢,

托马斯

Solutions Collecting From Web of "针对KitKat的GMail在发送不是图片或video的附件时崩溃"

就像我原来的问题的更新3中提到的,罪魁祸首是一个腐败的Gmail应用程序。 清除数据修复了这个问题。

更改代码:

 Uri.parse("file://" + file.getAbsolutePath())); 

至:

 Uri.fromFile(file) 

我卸载了Gmail应用程序,并重新安装了它,一切开始为我工作。