使用StreamProvider在消息传递中共享多个图像时出现异常

时间:2016-02-03 19:02:54

标签: android samsung-mobile mms commonsware-cwac

我使用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模拟器(仅限三星版本?)

  • 如果我不使用内容URI但文件路径
  • ,则有效

1 个答案:

答案 0 :(得分:2)

  

我不确定要正确添加此列支持我需要做些什么。

除了滚动自己的ContentProvider之外,你不能这样做。我必须调整LegacyCompatCursorWrapper来处理三星的错误。接收content:// Uri值的应用不应假设mime_type上存在query()列,主要是因为它不应该是一个。

:: sigh ::

您可以针对此增强功能跟踪this issue。我希望在本周末之前完成这项工作。