新的 KitKat URI 不响应 Intent.ACTION_VIEW

2023-12-23

由于 KitKat 已将 URI 从选择器更改为类似

 content://com.android.providers.media.documents/document/image:3951

那么我的 ACTION_VIEW 意图都不再起作用了。 例如,当用户选择图像时,我使用

public static void openImage(Fragment f, Uri uri) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "image/*");

        f.startActivity(intent);
    }

Android 图库和 Google+ 照片出现,但选择后,图库仅显示空白屏幕,照片显示“未找到媒体”

声音也一样,我习惯用

public static void playSound(Fragment f, Uri uri) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(uri, "audio/*");

    f.startActivity(intent);
}

在以前的版本中用于显示 Google Play 音乐,带有白色的小播放对话框 UI。使用新的 URI,我发现没有应用程序能够处理此意图。

// 对于照片,有趣的是,当您在新的 KK 选择器 UI 中选择图库而不是图片时,它会返回有效的旧 URI。

有任何想法吗? 系统应用程序是否还没有为新的 uri 做好准备?我是否应该以某种方式将新的 uri 破解为旧的 uri 以使意图发挥作用?或者我错过了什么?

Thanks!


解决办法就是传递flagFLAG_GRANT_READ_URI_PERMISSION达到意图(在 KitKat 及以上):

intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

另请确保此内容 Uri 是从 ACTION_OPEN_DOCUMENT 意图检索的,如下所述:https://stackoverflow.com/a/19874645/334209 https://stackoverflow.com/a/19874645/334209

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

新的 KitKat URI 不响应 Intent.ACTION_VIEW 的相关文章

随机推荐