使用 StreamProvider 在消息传递中共享多个图像时出现异常
Exception when sharing multiple images in messaging using StreamProvider
我使用 StreamProvider 将图像提供给其他应用程序。
一切正常,除了一种情况:当我尝试在我的三星 S6 设备 Android 5.1.1 上将多个图像共享到消息传递应用程序时,消息传递应用程序崩溃并显示这些日志:
Process: com.android.mms, PID: 31790
java.lang.IllegalArgumentException: column 'mime_type' does not exist
at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303)
at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:78)
at com.android.mms.ui.aif.a(MessageUtils.java:8184)
at com.android.mms.util.cf.run(HandleComposerAttachment.java:3251)
at java.lang.Thread.run(Thread.java:818)
显然底层游标不提供 mime_type 列。
我不确定我必须做什么才能正确添加此列支持。
附加信息:
- 我用
USE_LEGACY_CURSOR_WRAPPER
如果使用如下代码分享图片(其中imagesUris包含文件内容uri):
Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.setType("image/*");
// Start chooser activity
startActivity(Intent.createChooser(shareIntent, getString(R.string.share_send)));
它可以在我的 Android 5.1 上的 Genymotion 模拟器上运行(仅在三星版本上发布?)
- 如果我不使用内容 URI 而使用文件路径,它会起作用
I'm not sure what I have to do to correctly add this column support.
你不能,除非你自己滚动 ContentProvider
。我必须调整 LegacyCompatCursorWrapper
来处理三星的错误。接收 content://
Uri
值的应用程序不应假定 query()
上存在 mime_type
列,主要是因为不应该有一个。
::叹息::
您可以跟踪 this issue 此增强功能。我希望在本周末之前完成。
我使用 StreamProvider 将图像提供给其他应用程序。 一切正常,除了一种情况:当我尝试在我的三星 S6 设备 Android 5.1.1 上将多个图像共享到消息传递应用程序时,消息传递应用程序崩溃并显示这些日志:
Process: com.android.mms, PID: 31790
java.lang.IllegalArgumentException: column 'mime_type' does not exist
at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303)
at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:78)
at com.android.mms.ui.aif.a(MessageUtils.java:8184)
at com.android.mms.util.cf.run(HandleComposerAttachment.java:3251)
at java.lang.Thread.run(Thread.java:818)
显然底层游标不提供 mime_type 列。 我不确定我必须做什么才能正确添加此列支持。
附加信息:
- 我用
USE_LEGACY_CURSOR_WRAPPER
如果使用如下代码分享图片(其中imagesUris包含文件内容uri):
Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); shareIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); shareIntent.setType("image/*"); // Start chooser activity startActivity(Intent.createChooser(shareIntent, getString(R.string.share_send)));
它可以在我的 Android 5.1 上的 Genymotion 模拟器上运行(仅在三星版本上发布?)
- 如果我不使用内容 URI 而使用文件路径,它会起作用
I'm not sure what I have to do to correctly add this column support.
你不能,除非你自己滚动 ContentProvider
。我必须调整 LegacyCompatCursorWrapper
来处理三星的错误。接收 content://
Uri
值的应用程序不应假定 query()
上存在 mime_type
列,主要是因为不应该有一个。
::叹息::
您可以跟踪 this issue 此增强功能。我希望在本周末之前完成。