700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android 小米手机选择相册图片截取照片不进onActivityResult报“保存时发生错误 保存失败”

android 小米手机选择相册图片截取照片不进onActivityResult报“保存时发生错误 保存失败”

时间:2019-12-08 05:15:24

相关推荐

android 小米手机选择相册图片截取照片不进onActivityResult报“保存时发生错误 保存失败”

小米选择相册时如果不使用系统截屏,直接压缩不会报“保存时发生错误,保存失败”的错误,如果截屏就会报如上错误。

需要把URI地址转为图片地址,再包成file文件转为URI

Uri uri = intent.getData();String type = intent.getType();if (uri.toString().contains("com.miui.gallery.open")) {uri = getImageContentUri(activity, new File(getRealFilePath(activity, uri)));}

uri转为图片地址

/*** 将URI转为图片的路径** @param context* @param uri* @return*/public static String getRealFilePath(final Context context, final Uri uri) {if (null == uri)return null;final String scheme = uri.getScheme();String data = null;if (scheme == null)data = uri.getPath();else if (ContentResolver.SCHEME_FILE.equals(scheme)) {data = uri.getPath();} else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {Cursor cursor = context.getContentResolver().query(uri,new String[]{ImageColumns.DATA}, null, null, null);if (null != cursor) {if (cursor.moveToFirst()) {int index = cursor.getColumnIndex(ImageColumns.DATA);if (index > -1) {data = cursor.getString(index);}}cursor.close();}}return data;}

最后转成uri

public static Uri getImageContentUri(Context context, File imageFile) {String filePath = imageFile.getAbsolutePath();Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,new String[]{MediaStore.Images.Media._ID},MediaStore.Images.Media.DATA + "=? ",new String[]{filePath}, null);if (cursor != null && cursor.moveToFirst()) {int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));Uri baseUri = Uri.parse("content://media/external/images/media");return Uri.withAppendedPath(baseUri, "" + id);} else {if (imageFile.exists()) {ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.DATA, filePath);return context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);} else {return null;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。