【问题标题】:GMail for KitKat crashes on sending attachments that are not images or videosKitKat 的 GMail 在发送不是图像或视频的附件时崩溃
【发布时间】:2013-11-23 11:32:05
【问题描述】:

更新 3: 似乎这一切都是由于 OTA 升级到 KitKat 4.4 造成的。强制停止和清除 GMail 应用程序的数据修复了该问题。 OTA 更新并不是真正用户友好的结果。

更新 2: 崩溃纯粹是由于 Android 4.4 KitKat 中新的 Gmail 文件处理。添加除图像或视频以外的任何其他文件类型作为附件时,GMail 在发送电子邮件时会崩溃。为什么要删除他们应用的功能?

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

  1. 撰写新电子邮件

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

  3. 选择其中一项。

  4. 选择文件浏览器(如 ES 文件浏览器)以选择 zip/apk/...(或其他非图像/视频文件)

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

更新:

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

GMail 在 KitKat 上是否损坏?

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 提到了文件大小,如果文件路径错误,它不会提及)。

屏幕截图:(我还没有 10 个代表,所以无法嵌入) http://i.imgur.com/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();

作为每条路径的基础,我已经包含了

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

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

希望能在这里提供一些意见。

提前致谢,

托马斯

【问题讨论】:

  • 也许你可以在b.android.com提出问题?
  • 我在 Android 4.1.2 (Nexus S) 上遇到了与附加图像相同的 Gmail 崩溃问题。所以它不仅仅是 KitKat。
  • 已删除 Gmail 数据库,将所有内容与 gmail 帐户重新同步,崩溃消失了!
  • Paul,我提交了一个问题,但显然这是一个 AOSP 未涵盖的 gmail 问题。

标签: android android-intent nullpointerexception gmail


【解决方案1】:

就像我在原始问题的更新 3 中提到的那样,罪魁祸首是损坏的 gmail 应用程序。清除数据可以解决问题。

【讨论】:

    【解决方案2】:

    更改代码:

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

    收件人:

    Uri.fromFile(file)
    

    【讨论】:

    • 我遇到了类似的问题。要尝试的另一件事是将类型从“application/zip”更改为“application/*”
    • 也尝试过,包括“/”作为类型。 (抱歉,作为 StackOverflow 新手,我不知道如何输入通配符:p)
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2012-10-09
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      相关资源
      最近更新 更多