我有以下代码:
Bitmap b= BitmapFactory.decodeFile(imagePath);
其中imagPath值为/ external / images / media / 43426(我通过允许用户使用此代码从手机中选择图像来阅读它:
Uri selectedImage = imageReturnedIntent.getData();
imagePath = selectedImage.toString();
问题是b总是为空!我已经添加了READ_EXTERNAL_STORAGE的权限,并尝试了网上找到的许多解决方案但没有成功!
答案 0 :(得分:1)
其中imagPath值为/ external / images / media / 43426
这不是how to use a Uri
,特别是content
方案,正如你所拥有的那样。
或者:
使用众多image loading libraries available for Android中的一个,传递完整的Uri
或
使用ContentResolver
和openInputStream()
,然后将InputStream
传递给BitmapFactory.decodeStream()
答案 1 :(得分:1)
将文件路径解码为位图。如果指定的文件名为null,或者无法解码为位图,则该函数返回null。
通过使用Logcat或任何日志记录源,您可以验证imagePath = "/external/images/media/43426"
实际上不是File
,只是URI
您可以从URI获取文件或其内容:
Log.v(TAG, "Uri: " + data.getData().toString());
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());