android mediastore.images.media.insertimage,尝试获取图像URI时,mediastore.images.media.insertImage返回空值...
我需要从图像位图中获取URI,所以我使用此方法获取URI
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
fixMediaDir();
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
但是
MediaStore.Images.Media.insertImage
返回
无效的
在某些设备中
笔记
:我已向清单添加权限
并添加了
运行时权限
也用于相机和存储。
我还补充说
FileProvider
在清单中:
android:name="android.support.v4.content.FileProvider"
android:authorities="com.mvc.imagepicker.provider"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"
tools:replace="android:resource"/>
通知
提供者的权限是
"com.mvc.imagepicker.provider"
因为我用
Mariovc/图像选取器
使用了和他一样的权威。
我在其他帖子中看到,有人提到在调用
mediastore.images.media.insertImage中
public void fixMediaDir() {
File sdcard = Environment.getExternalStorageDirectory();
Log.d("a111", "sdcard: "+sdcard);
if (sdcard != null) {
File mediaDir = new File(sdcard, "DCIM/Camera");
if (!mediaDir.exists()) {
mediaDir.mkdirs();
}
}
}
所以它会创建一个目录,如果不是兴奋,但它没有帮助我。
所以我把这个贴在这里,也许我错过了别的东西,有人可以帮我。