小米手机相册选取后的intent为空?
程序员文章站
2022-03-11 21:56:29
一、问题现象在小米手机选择相册图片-裁剪后发现拿不到图片 展示不出来,通过debug发现小米手机上的Intent返回了空@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);}二、问题解决因此小米手机的相册选择图片需要进行特殊处理 /**...
一、问题现象
在小米手机选择相册图片-裁剪后发现拿不到图片 展示不出来,通过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 value
index = 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);
}
通过以上方式进行小米手机的图片获取
本文地址:https://blog.csdn.net/FrancisBingo/article/details/110171079
上一篇: docker讲解及安装