小米手机相册选取图片闪退问题
问题:
Caused by: java.lang.SecurityException: UID 10799 does not have permission to content://com.miui.gallery.open/raw/%2Fstorage%2Femulated%2F0%2FDCIM%2FCamera%2Fheader_view.jpg [user 0]
其他手机没有问题,但是我用的这个红米K40选照片做裁剪时,出现了这个问题,主要是两个:
一是从相册选取照片,二是调用裁剪(需要处理权限)
选取照片需要判断:
Build.VERSION.SDK_INT >= 24,处理imageUri的路径,对于24以上版本,需要再Mainifest文件中声明FileProvider,如下:
<providerandroid:name="androidx.core.content.FileProvider"android:authorities="${APPLACATION_ID}.fileprovider"android:grantUriPermissions="true"android:exported="false"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths"/>
</provider>
file_paths.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<paths><external-path name="images" path="Pictures"/><external-files-path path="/myapp/" name="apk_path"/><external-files-path path="/myapp/head/" name="head_view"/><external-path name="beta_external_path" path="Download/"/><external-path name="beta_external_files_path" path="Android/data/"/></paths>
处理imageUri的路径如下:
Intent intent = new Intent(Intent.ACTION_PICK);
file = new File(MyConstants.HEAD_PATH, "header_view.jpg");
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){imageUri = FileProvider.getUriForFile(this,MyConstants.APPLCATION_ID+".fileprovider",file);
}else{imageUri = Uri.fromFile(file);
}
intent.setType("image/*");
intent.putExtra("crop",true);
intent.putExtra("scale",true);
startActivityForResult(intent, CHOOSE_PHOTO);
选取之后,进行裁剪
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(data.getData(), "image/*");
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("return-data", false);
ToastShowUtils.INSTANCE.grantPermissionFix(this, intent, imageUri);
startActivityForResult(intent, CUT_PHOTO);// 启动裁剪程序
处理权限方法如下,使用kotlin写的
fun grantPermissionFix(mActivity: Activity, intent: Intent, uri: Uri?) {var flag = Intent.FLAG_GRANT_READ_URI_PERMISSIONflag = flag or Intent.FLAG_GRANT_WRITE_URI_PERMISSIONintent.addFlags(flag)val resInfoList = mActivity.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)for (resolveInfo in resInfoList) {val packageName = resolveInfo.activityInfo.packageNametry {mActivity.grantUriPermission(packageName, uri, flag)} catch (e: Exception) {continue}intent.action = nullintent.component = ComponentName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name)break}
}
以上完美解决选取图片,并成功裁剪保存到指定路径。
小米手机相册选取图片闪退问题相关推荐
- 小米手机安装apk闪退
其他的7.0以上的手机可以正常启动,但是小米不可以,是因为我的代码里少了这个权限,加上就可以了 <uses-permission android:name="android.permi ...
- 小米手机短信闪退处理方法
建议备份后尝试一下进入Recovery(关机,按住音量上+开机键进入recovery模式)清空所有数据,开机之后暂时不要还原数据,看看是否可以解决问题,如果还是无法解决,建议您尝试线刷到最新开发版尝试 ...
- 小米手机拦截返回音设置不了_手机老出现闪退怎么办?这样可以解决
手机应用经常闪退,相信很多人都会遇到这样的问题,到底是什么原因导致呢?出现这种情况我们又该如何去处理呢?我们一起来看看. 编辑 请点击输入图片描述 后台运行程序过多 一般我们在使用过某个软件后,都会 ...
- 调用系统相机和相册出现闪退报错No Activity found to handle Intent
调用系统相机和相册出现闪退报错No Activity found to handle Intent : 在开发安卓项目的时候遇到了一个问题,当手机调用系统相机和相册的时候会出现闪退的现象,根据报错常常 ...
- axure怎么做手机app界面_iPhone11手机APP频繁闪退怎么办?
任何手机,任何系统,都可能会出现闪退的问题,苹果iPhone也不例外.偶尔闪退属正常现象,如果很多APP都闪退,而且非常频繁怎么办呢?iPhone11手机APP频繁闪退怎么办?如何修复? 我们先了解下 ...
- vue调用手机相机相册_今天才发现,点一下小米手机相册,能将照片一键制作成电影...
随着国产手机的发展,手机像素越来越高,里面的功能也越来越丰富,手机拍照成了不少人的日常,如果你很爱拍照,手机里有一大堆照片,那么教你用手机自带的相册功能,一键将照片制作成电影,自带背景音乐,好看还很高 ...
- lightroom 闪退_苹果iPhone11手机APP频繁闪退怎么办?如何修复?
今天分享的是苹果iPhone11手机APP频繁闪退的解决方法. 我们先了解下iPhone11手机闪退的原因: 1.插件影响程序的正常运行,而导致APP闪退: 2.下载的软件与手机系统版本的不匹配,比如 ...
- Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题
Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...
- 隐藏在小米手机相册中的功能,你不会以为相册只能用来存图片吧?
如果说到手机相册,你的第一反应是什么?用来保存图片的功能.相信大多数人的想法都是这样的,但是今天就来说说小米手机相册中一些实用并且有意思的功能. 1.魔法消除 这个功能可能只有部分人了解,还有一部分并 ...
最新文章
- 为什么有那么多的水,源源不断从山上流下来,到底是从哪里来的?
- 实战SSM_O2O商铺_15【商铺注册】View层+Controller层之图片上传
- 微众WeCross 跨链平台(3)交易流程
- stm32f103c8t6移植uCOS Ⅲ出现Error: L6407W,解决方法:内核配置以减小代码规模
- 【Java版】将汉字转化为gb2312编码
- php学习_与mysql的连接 2013.01.04
- redis缓存设计要点随谈
- 统计文件里有多少个字符(only a simple cpp)
- 【HTML5】HTML5支持的通用属性
- 如何用c#打开文件夹并选择文件夹内的一个文件 open folder and select file
- app调用webapi时候出现读取不到session的问题
- Android学习系列(4)--App自适应draw9patch不失真背景
- hdu3336 Count the string
- android 波斯文排序,android 阿拉伯,波斯字符串从右到左显示问题
- 搭建Springboot单体项目
- dell笔记本外接显示器_戴尔笔记本怎么连接外接显示器?
- 图解刘谦如何手穿玻璃桌(详细图文说明)
- Java学习笔记(二)JavaSE
- python 批量修改文件名_Python 批量修改文件名
- 时隔二十年,C++又杀回来了!