大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
在Google Nexus 7 ( Version 4.4.2 )平板出现之前,Intent.ACTION_GET_CONTENT打开相册会返回如下形式的Uri :
content://media/external/images/media/3951 ,
使用ContentResolver查询MediaStore.Images.Media.DATA就可以找文件的URL, 然而在Google Nexus 7 上用同样的方法,却是返回如下Uri :
content://com.android.providers.media.documents/document/image:3951,
这时使用ContentResolver就会报一些异常出来,提示说是没有权限(如takePersistableUriPermission等),网上也有一些建议方案,给这个Uri加上相应的权限,不过
效果都不太理想。
在不断搜索,实践的过程,发现在了有一个比较方便高效的解决问题的方法,分享出来,希望遇到同样问题的码友们能快速解决问题,轻松一下,
方案如下:
Intent intent = new Intent();
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
//根据版本号不同使用不同的Action
if (Build.VERSION.SDK_INT <19) {
intent.setAction(Intent.ACTION_GET_CONTENT);
}else {
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
}
startActivityForResult(intent, REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==REQUEST_CODE) {
if (null!=data) {
Uri uri = data.getData();
//根据需要,也可以加上Option这个参数
InputStream inputStream = getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
}
}
}
以上方法经不同Android机型测试,均能正常运行,分享出来,希望对码友们有用!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194070.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...