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

标签 android samsung-mobile mms commonsware-cwac

我使用 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/

相关文章:

android - 如何将 vcard 作为短信/彩信发送?

azure - 是否可以使用 Azure 通信服务发送和接收彩信?

android - 更新传递给适配器的列表对象以创建 GridView

java - Android:Google Place Autocomplete API 给出“此 ip、站点或移动应用程序未被授权使用此 API key

java - 在多播套接字上接收单播

android - 在 Android 中找不到使用 DigestUtils 的方法

android - 使用 Android MediaRecorder 录制的视频在 Samsung Galaxy S2 上损坏

android - 在 android 上打开主要的 SMS 对话 Intent

javascript - Cordova 误报 screen.width 和 screen.height

android - Toast 未在 Samsung Galaxy S3 上显示(最新更新 4.1.2)