urS*_*Sus 11 android uri android-intent
由于KitKat已将URI从拾取器更改为喜欢的
content://com.android.providers.media.documents/document/image:3951
Run Code Online (Sandbox Code Playgroud)
那时我的ACTION_VIEW意图都不再有用了.例如,当用户选择图像时,我会使用
public static void openImage(Fragment f, Uri uri) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "image/*");
f.startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
和Android图库和Google+照片一起出现,但选中后,图库只显示空白屏幕,照片显示"未找到中等"
声音也一样,我习惯使用
public static void playSound(Fragment f, Uri uri) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "audio/*");
f.startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
用于在以前的版本中显示Google Play音乐,使用小白色播放对话框UI.使用新的URI,我得到一个例外,没有应用程序能够处理此意图.
//对于照片,有趣的是,当你在新的KK选择器UI中选择Gallery而不是Pictures时,它会返回有效的旧URI.
有任何想法吗?系统应用程序还没有为新的uris做好准备吗?我应该以某种方式将新的uris破解为旧的uris以使意图有效吗?或者我错过了什么?
谢谢!
解决方案是将标志传递FLAG_GRANT_READ_URI_PERMISSION给intent(在KitKat及以上):
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Run Code Online (Sandbox Code Playgroud)
还要确保从ACTION_OPEN_DOCUMENT意图中检索此内容Uri,如下所述:https://stackoverflow.com/a/19874645/334209
| 归档时间: |
|
| 查看次数: |
1337 次 |
| 最近记录: |