GMail для KitKat падает при отправке вложений, которые не являются изображениями или видео

ОБНОВЛЕНИЕ 3: Похоже, все это было вызвано обновлением OTA до KitKat 4.4. Сила остановки и очистки данных приложения GMail исправил проблему. Не очень удобный результат обновления OTA.

ОБНОВЛЕНИЕ 2: Авария происходит исключительно из-за новой обработки файлов Gmail в Android 4.4 KitKat. При добавлении любого другого файла в качестве вложения, чем изображения или видео, GMail падает при отправке электронной почты. Зачем удалять функциональность своего приложения?

Кто-нибудь знает, где сообщать об ошибках GMail? Я могу воспроизвести аварии, просто используя GMail (не мой собственный код):

  1. Создать новое письмо

  2. Добавить приложение (только 2 варианта: «Прикрепить изображение» или «Прикрепить видео»)

  3. Выберите один из них.

  4. Выберите браузер файлов (например, ES-файл-проводник), чтобы выбрать zip / apk / … (или другой файл, который не является изображением / видео)

  5. Gmail падает при отправке почты.

ОБНОВИТЬ:

Авария произошла на моем Nexus 4, запущенном официальном (OTA) KitKat. Тем не менее, работает тот же самый код на моем Samsung Galaxy S2, работающем CM10.2 в ночное время (Jelly Bean), прекрасно работает. Он также работает на вкладке Samsung Galaxy Tab 2 4.0.4.

Разбита ли 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?

Хотелось бы полюбить некоторый вклад здесь.

Заранее спасибо,

Томас

Как упоминалось в обновлении 3 моего первоначального вопроса, виновник является коррумпированным приложением gmail. Исправление данных устраняет проблему.

Измените код:

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

Для того, чтобы:

 Uri.fromFile(file) 

Я удалил приложение Gmail и переустановил его, и все стало работать для меня.