Цель обмена изображениями работает для Gmail, но приводит к сбою FB и Twitter

Я пытаюсь разрешить пользователю поделиться изображением с другими приложениями на устройстве. Изображение находится в подкаталоге files / внутренней области моего приложения. С Gmail все работает нормально, но Facebook и Twitter оба вылетали, когда отвечали на мои намерения.

РЕДАКТИРОВАТЬ: Google+ также работает нормально.

Вот соответствующие разделы кода.

В Application.xml

<provider 
    android:name="android.support.v4.content.FileProvider"
    android:authorities="org.iforce2d.myapp.MyActivity"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/filepaths" />
</provider>

XML / filepaths.xml

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="shared" path="shared"/>
</paths>

Вот код обмена в моей деятельности:

File imagePath = new File(getContext().getFilesDir(), "shared");
File newFile = new File(imagePath, "snapshot.jpg");
Uri contentUri = FileProvider.getUriForFile(getContext(),
                     "org.iforce2d.myapp.MyActivity", newFile);    

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/jpeg");
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

List<ResolveInfo> resInfos = 
    getPackageManager().queryIntentActivities(shareIntent,
                                              PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo info : resInfos) {
    getContext().grantUriPermission(info.activityInfo.packageName, 
                                    contentUri,
                                    Intent.FLAG_GRANT_READ_URI_PERMISSION);
}

startActivity(Intent.createChooser(shareIntent, "Share image..."));

ЗначениеcontentUri когда зарегистрировано:

content://org.iforce2d.myapp.MyActivity/shared/snapshot.jpg

Я проверил это только с Gmail, Facebook и Twitter в качестве принимающих приложений, но результаты были очень стабильными в широком диапазоне версий ОС (от 2.2.1 до 4.4.3), и 7 устройств включают Kindle.

Gmail прекрасно работает. Миниатюра изображения появляется в составе письма и при отправке успешно прикрепляется к почте.

Как Twitter, так и Facebook аварийно завершают работу, как показано ниже.

Вот следы стека от logcat, показывающие проблему, с которой сталкиваются эти два приложения. Похоже, что для них обоих проблема одинакова (это взято из 4.4.3, но ошибки были практически одинаковыми вплоть до 2.2. 1, хотя и с немного другой формулировкой сообщения об ошибке):

Caused by: 
  java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. 
  Make sure the Cursor is initialized correctly before accessing data from it.
    at android.database.CursorWindow.nativeGetString(Native Method)
    at android.database.CursorWindow.getString(CursorWindow.java:434)
    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
    at android.database.CursorWrapper.getString(CursorWrapper.java:114)
    at com.twitter.library.media.util.f.a(Twttr:95)
    ...

Caused by: 
  java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.
  Make sure the Cursor is initialized correctly before accessing data from it.
    at android.database.CursorWindow.nativeGetString(Native Method)
    at android.database.CursorWindow.getString(CursorWindow.java:434)
    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
    at android.database.CursorWrapper.getString(CursorWrapper.java:114)
    at com.facebook.photos.base.media.MediaItemFactory.b(MediaItemFactory.java:233)
    ...

Учитывая, что миллионы людей делятся изображениями в Facebook и Twitter весь день, я очень шокирован, что это так сложно реализовать: /

Кто-нибудь может заметить, что я здесь не так делаю?

Ответы на вопрос(2)

Ваш ответ на вопрос