一、问题现象

在小米手机选择相册图片-裁剪后发现拿不到图片 展示不出来,通过debug发现小米手机上的Intent返回了空

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);

}

二、问题解决

因此小米手机的相册选择图片需要进行特殊处理

 /*** 小米** @param intent* @return*/public Uri getPictureUri(android.content.Intent intent) {Uri uri = intent.getData();String type = intent.getType();if (uri.getScheme().equals("file") && (type.contains("image/"))) {String path = uri.getEncodedPath();if (path != null) {path = Uri.decode(path);ContentResolver cr = this.getContentResolver();StringBuffer buff = new StringBuffer();buff.append("(").append(MediaStore.Images.ImageColumns.DATA).append("=").append("'" + path + "'").append(")");Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,new String[]{MediaStore.Images.ImageColumns._ID},buff.toString(), null, null);int index = 0;for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {index = cur.getColumnIndex(MediaStore.Images.ImageColumns._ID);// set _id valueindex = cur.getInt(index);}if (index == 0) {// do nothing} else {Uri uri_temp = Uri.parse("content://media/external/images/media/"+ index);if (uri_temp != null) {uri = uri_temp;}}}}return uri;}
 private void reSizeImage(Uri uri) {//重新剪裁图片的大小Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");// crop为true是设置在开启的intent中设置显示的view可以剪裁intent.putExtra("crop", "true");// aspectX aspectY 是宽高的比例intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// outputX,outputY 是剪裁图片的宽高intent.putExtra("outputX", 300);intent.putExtra("outputY", 300);/*** 此方法返回的图片只能是小图片(sumsang测试为高宽160px的图片)* 故只保存图片Uri,调用时将Uri转换为Bitmap,此方法还可解决miui系统不能return data的问题*///intent.putExtra("return-data", true);//裁剪后的图片Uri路径,uritempFile为Uri类变量photoURI = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "/" + "small.jpg");intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());startActivityForResult(intent, REQUEST_SMALL_IMAGE_CUTTING);}
 @Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// 回调成功if (resultCode == RESULT_OK) {switch (requestCode) {// 小图切割case REQUEST_SMALL_IMAGE_CUTTING:// 小米手机需要特殊适配if (GmConstant.PHONE_XIAOMI.equals(android.os.Build.MANUFACTURER) || GmConstant.PHONE_VIVO.equals(android.os.Build.MANUFACTURER) || Build.VERSION.SDK_INT > 24) {try {Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(photoURI));// 缩放图片大小Bitmap resetSaveBitmap = Bitmap.createScaledBitmap(bitmap, 960, 1280, true);Uri uriPath = BitmapUtil.saveAlbum(MainActivity.this, resetSaveBitmap, Bitmap.CompressFormat.JPEG, 100, true);String imgpath = GmUriToPathUtil.getRealFilePath(MainActivity.this, uriPath);Intent intent = new Intent(MainActivity.this, TakeFaceActivity.class);intent.putExtra("facePath", imgpath);startActivity(intent);} catch (FileNotFoundException e) {e.printStackTrace();}} else {if (data != null) {setPicToView(data);}}break;// 相册选取case REQUEST_IMAGE_GET:// 小米的相册选择比较特殊、需要适配if (GmConstant.PHONE_XIAOMI.equals(android.os.Build.MANUFACTURER) || GmConstant.PHONE_VIVO.equals(android.os.Build.MANUFACTURER) || Build.VERSION.SDK_INT > 24) {photoURI = getPictureUri(data);reSizeImage(photoURI);} else {try {photoURI = data.getData();startSmallPhotoZoom(photoURI);} catch (NullPointerException e) {e.printStackTrace();}}break;default:break;}}}

通过以上方式进行小米手机的图片获取

小米手机相册选取后的intent为空?相关推荐

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

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

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

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

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

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

  4. 小米手机更新新手机后天府通电信nfc卡无法检测解决步骤方法

    描述:小米手机更新新手机后天府通电信nfc卡无法检测解决步骤方法 步骤: 新手机下载天府通->APP权限管理->获取手机信息选择始终允许 关机->拔掉手机卡->开机->关 ...

  5. 小米手机 安装AndroidAuto后连接车机,提示android auto出现错误 通信错误16

    现象 小米手机 安装AndroidAuto后连接车机,提示android auto出现错误 通信错误16 解决 可能因为双开应用不兼容导致的,需要在手机端关闭应用双开. 不同手机位置不一定一样, 举例 ...

  6. 小米手机碎屏后米四启动屏幕虚拟键,禁用实体键

    小米手机碎屏后米四启动屏幕虚拟键,禁用实体键 故障说明,因为左下角碎裂,导致 实体MENU键处于半触发状态,经常莫名的会启动后台运行程序,同时三个实体键出现经常触发不灵敏的状态. 所以想来想去,还是想 ...

  7. 小米手机相册选择并裁剪图片

    /** * 裁剪原始的图片 */ public static final int PHOTOZOOM = 2; // 缩放 public static final int PHOTORESOULT = ...

  8. 小米手机相册选取图片闪退问题

    问题: Caused by: java.lang.SecurityException: UID 10799 does not have permission to content://com.miui ...

  9. 你的小米手机升级MIUI11后,电池掉电很快?那是这些设置没关掉吧

    小米的MIUI11系统已经推送了1个月左右了,能升级到MIUI11的机型也有好几款,并且MIUI11系统的反响很不错,不仅可以一键关闭广告,UI界面也变的更简洁好看了. 但是升级到MIUI11后,很多 ...

最新文章

  1. Python知识点进阶——生成器
  2. ## **scrapy+kafka+sparkstream爬取京东Iphone12评论储存数据**
  3. 洛谷——P2660 zzc 种田
  4. Delphi XE 10.2.3使用CEF4Delphi取网页元素时碰到nbsp;变问号?的处理
  5. javascript中Math.random()产生随机数总结
  6. MatLab实现布朗运动
  7. 找出两列表共有的元素python,两个列表之间的公共元素未在Python中使用集
  8. mysql kill 脚本_批量 kill mysql 中运行时间长的sql
  9. Wordpress插件检测机制原理
  10. BGP——路由汇总造成次优选路问题
  11. 定量的方法如何能划分类别?
  12. Canvas--文字渲染
  13. Waymo真·无人车上路了!没司机的出租车推出在即 | 多图实拍
  14. ICMP(网际控制报文协议)
  15. DoIP协议:通用DoIP首部否定确认码02和03的区别
  16. 计算机二级电子表格使用技巧36种,Excel表格的基本操作(精选36个技巧)
  17. CSS实现背景图片透明文字不透明效果的两种方法
  18. 使用Python进行Excel文件拆分
  19. JavaScript学习笔记 06、DOM元素—③定时器与延时器
  20. 今天的“指导”感触:融会贯通;雄关漫道真如铁,而今漫步从头越!

热门文章

  1. matlab中zeros表示什么,Matlab中 函数zeroS(1,8) 代表什么意思??
  2. 被漂亮的“假”数据蒙蔽?用它精确追踪APP数据!
  3. IntelliJ IDEA-配置文件位置从c盘改d盘
  4. 数据结构之---交换左右子树
  5. 汤姆大叔JavaCript系列10阅读笔记
  6. 你有了解过文字翻译器哪个好吗?
  7. python getattribute方法_Python:__ getattribute__方法和描述符
  8. 小猿圈web之前端的主流框架
  9. 自动驾驶计算系统的多种计算架构---分布式计算架构、中心式计算架构和混合式计算架构
  10. docker配置国内镜像加速器