我使用StreamProvider向其他应用提供图片。 除了一种情况外,一切正常:当我尝试在我的Samsung 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模拟器(仅限三星版本?)
答案 0 :(得分:2)
我不确定要正确添加此列支持我需要做些什么。
除了滚动自己的ContentProvider
之外,你不能这样做。我必须调整LegacyCompatCursorWrapper
来处理三星的错误。接收content://
Uri
值的应用不应假设mime_type
上存在query()
列,主要是因为它不应该是一个。
:: sigh ::
您可以针对此增强功能跟踪this issue。我希望在本周末之前完成这项工作。