java.lang.IllegalStateException: 构建唯一文件失败: /storage/emulated/0/Pictures 标题 image/jpeg Android 10(Samsung note 10+)
java.lang.IllegalStateException: Failed to build unique file: /storage/emulated/0/Pictures Title image/jpeg Android 10(Samsung note 10+)
我正在使用下面的代码从相机获取图像 uri
public static Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
这仅在 android 10 中出现错误,早期版本使用这种 code.Any 方式工作正常,与版本无关 我只是更改了 insertImage() 中的硬编码 "Title"至
public static Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, **"IMG_" + Calendar.getInstance().getTime(),** null);
return Uri.parse(path);
}
现在它是一个带有 IMG_+时间的标签
是的,此错误仅在 Android10 中出现,并且仅在某些设备型号中出现。
所有图像都存储为“标题”,但需要一个唯一的名称。
如果您尝试同时存储多个图像,则接受的答案并不总是生成唯一的名称。
所以替换 insertImage
调用:
String path = MediaStore.Images.Media.insertImage(
inContext.getContentResolver(), inImage, "IMG_" + System.currentTimeMillis(), null
);
是的,我有 Android 11,当我从相机上传图像时它无法识别路径。
我已经通过
解决了这个问题
Random rand = new Random();
int randNo = rand.nextInt(1000);
String path = MediaStore.Images.Media.insertImage(
inContext.getContentResolver(), inImage, "IMG_" + randNo, null
);
我正在使用下面的代码从相机获取图像 uri
public static Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
这仅在 android 10 中出现错误,早期版本使用这种 code.Any 方式工作正常,与版本无关 我只是更改了 insertImage() 中的硬编码 "Title"至
public static Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, **"IMG_" + Calendar.getInstance().getTime(),** null);
return Uri.parse(path);
}
现在它是一个带有 IMG_+时间的标签
是的,此错误仅在 Android10 中出现,并且仅在某些设备型号中出现。
所有图像都存储为“标题”,但需要一个唯一的名称。
如果您尝试同时存储多个图像,则接受的答案并不总是生成唯一的名称。
所以替换 insertImage
调用:
String path = MediaStore.Images.Media.insertImage(
inContext.getContentResolver(), inImage, "IMG_" + System.currentTimeMillis(), null
);
是的,我有 Android 11,当我从相机上传图像时它无法识别路径。 我已经通过
解决了这个问题 Random rand = new Random();
int randNo = rand.nextInt(1000);
String path = MediaStore.Images.Media.insertImage(
inContext.getContentResolver(), inImage, "IMG_" + randNo, null
);