无法在 M 预览中从外部存储加载图像
Can't load images from external storage in M preview
我有一个将图像存储在外部存储器上的应用程序。在我尝试新的 M 预览版之前,它一直运行良好。
我使用 picasso(我什至尝试过 Ion)加载图像,并且我使用 "file:///mnt/sdcard/appname/image1.jpg" URI 获取图像。
我完全没有收到任何错误,但我猜测 M 已经更改了从外部存储读取的权限。我试过谷歌搜索,但一无所获。
顺便说一句,将图像写入外部存储正常。
您可以尝试检查权限是否被授予:
checkCallingOrSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
并尝试使用 requestPermissions()
.
像这样请求运行时权限
int EXT_PERMISSION = 1;
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
而且,
处理 Permission Granted 结果
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case EXT_PERMISSION: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//permission granted
} else {
//permission denied
}
break;
}
}
}
虽然 siris_cac 答案解释得很好,但这并不是导致我出现问题的原因。
结果我无法使用 "file:///mnt/sdcard/appname/image1.jpg" 从 M 中的外部存储加载文件。
有关
我想我从一开始就错了,没有在加载图像时使用 Enviroment.getExternalStorageDirectory(),只有在保存图像时才使用。
所以现在要加载我使用的图像:
"file:///" + Environment.getExternalStorageDirectory().getPath() + "/appname/image1.jpg";
我有一个将图像存储在外部存储器上的应用程序。在我尝试新的 M 预览版之前,它一直运行良好。
我使用 picasso(我什至尝试过 Ion)加载图像,并且我使用 "file:///mnt/sdcard/appname/image1.jpg" URI 获取图像。
我完全没有收到任何错误,但我猜测 M 已经更改了从外部存储读取的权限。我试过谷歌搜索,但一无所获。
顺便说一句,将图像写入外部存储正常。
您可以尝试检查权限是否被授予:
checkCallingOrSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
并尝试使用 requestPermissions()
.
int EXT_PERMISSION = 1;
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
而且, 处理 Permission Granted 结果
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case EXT_PERMISSION: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//permission granted
} else {
//permission denied
}
break;
}
}
}
虽然 siris_cac 答案解释得很好,但这并不是导致我出现问题的原因。 结果我无法使用 "file:///mnt/sdcard/appname/image1.jpg" 从 M 中的外部存储加载文件。
有关我想我从一开始就错了,没有在加载图像时使用 Enviroment.getExternalStorageDirectory(),只有在保存图像时才使用。
所以现在要加载我使用的图像:
"file:///" + Environment.getExternalStorageDirectory().getPath() + "/appname/image1.jpg";