我使用 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对于这个增强。我希望在本周末之前解决这个问题。
关于android - 使用 StreamProvider 在消息传递中共享多个图像时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35185485/