问题:

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}
}

以上完美解决选取图片,并成功裁剪保存到指定路径。

小米手机相册选取图片闪退问题相关推荐

  1. 小米手机安装apk闪退

    其他的7.0以上的手机可以正常启动,但是小米不可以,是因为我的代码里少了这个权限,加上就可以了 <uses-permission android:name="android.permi ...

  2. 小米手机短信闪退处理方法

    建议备份后尝试一下进入Recovery(关机,按住音量上+开机键进入recovery模式)清空所有数据,开机之后暂时不要还原数据,看看是否可以解决问题,如果还是无法解决,建议您尝试线刷到最新开发版尝试 ...

  3. 小米手机拦截返回音设置不了_手机老出现闪退怎么办?这样可以解决

    手机应用经常闪退,相信很多人都会遇到这样的问题,到底是什么原因导致呢?出现这种情况我们又该如何去处理呢?我们一起来看看. 编辑 请点击输入图片描述 ​后台运行程序过多 一般我们在使用过某个软件后,都会 ...

  4. 调用系统相机和相册出现闪退报错No Activity found to handle Intent

    调用系统相机和相册出现闪退报错No Activity found to handle Intent : 在开发安卓项目的时候遇到了一个问题,当手机调用系统相机和相册的时候会出现闪退的现象,根据报错常常 ...

  5. axure怎么做手机app界面_iPhone11手机APP频繁闪退怎么办?

    任何手机,任何系统,都可能会出现闪退的问题,苹果iPhone也不例外.偶尔闪退属正常现象,如果很多APP都闪退,而且非常频繁怎么办呢?iPhone11手机APP频繁闪退怎么办?如何修复? 我们先了解下 ...

  6. vue调用手机相机相册_今天才发现,点一下小米手机相册,能将照片一键制作成电影...

    随着国产手机的发展,手机像素越来越高,里面的功能也越来越丰富,手机拍照成了不少人的日常,如果你很爱拍照,手机里有一大堆照片,那么教你用手机自带的相册功能,一键将照片制作成电影,自带背景音乐,好看还很高 ...

  7. lightroom 闪退_苹果iPhone11手机APP频繁闪退怎么办?如何修复?

    今天分享的是苹果iPhone11手机APP频繁闪退的解决方法. 我们先了解下iPhone11手机闪退的原因: 1.插件影响程序的正常运行,而导致APP闪退: 2.下载的软件与手机系统版本的不匹配,比如 ...

  8. Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题

    Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...

  9. 隐藏在小米手机相册中的功能,你不会以为相册只能用来存图片吧?

    如果说到手机相册,你的第一反应是什么?用来保存图片的功能.相信大多数人的想法都是这样的,但是今天就来说说小米手机相册中一些实用并且有意思的功能. 1.魔法消除 这个功能可能只有部分人了解,还有一部分并 ...

最新文章

  1. 为什么有那么多的水,源源不断从山上流下来,到底是从哪里来的?
  2. 实战SSM_O2O商铺_15【商铺注册】View层+Controller层之图片上传
  3. 微众WeCross 跨链平台(3)交易流程
  4. stm32f103c8t6移植uCOS Ⅲ出现Error: L6407W,解决方法:内核配置以减小代码规模
  5. 【Java版】将汉字转化为gb2312编码
  6. php学习_与mysql的连接 2013.01.04
  7. redis缓存设计要点随谈
  8. 统计文件里有多少个字符(only a simple cpp)
  9. 【HTML5】HTML5支持的通用属性
  10. 如何用c#打开文件夹并选择文件夹内的一个文件 open folder and select file
  11. app调用webapi时候出现读取不到session的问题
  12. Android学习系列(4)--App自适应draw9patch不失真背景
  13. hdu3336 Count the string
  14. android 波斯文排序,android 阿拉伯,波斯字符串从右到左显示问题
  15. 搭建Springboot单体项目
  16. dell笔记本外接显示器_戴尔笔记本怎么连接外接显示器?
  17. 图解刘谦如何手穿玻璃桌(详细图文说明)
  18. Java学习笔记(二)JavaSE
  19. python 批量修改文件名_Python 批量修改文件名
  20. 时隔二十年,C++又杀回来了!

热门文章

  1. 快速、深入理解设计模式的what、why、how
  2. 网络流 (一) 最大流的原理图解
  3. 项目流程管理效率提升的3个核心点
  4. 深入理解 Java 虚拟机
  5. python 用openpyxi读取excel文件的简单使用
  6. 掌握自动化部署,拿下DevOps半壁江山还远吗?
  7. linux如何清除硬盘数据,linux操作系统彻底清除硬盘数据方法
  8. hook监控限制_iOS逆向之hook控制中心开关
  9. 跟踪宝宝发育应用程序的开发思路
  10. 高校邮件系统盗号问题处置经验-复旦大学