2

我有一个应用程序将其图像存储在外部存储上。在我尝试新的 M 预览版之前,这一直很好用。

我使用 picasso(我什至尝试过 Ion)来加载图像,并使用“file:///mnt/sdcard/ appname /image1.jpg” URI 获取图像。

我根本没有收到任何错误,但我猜 M 已经更改了从外部存储读取的权限。我试过谷歌搜索,但我空无一物。

顺便说一句,将图像写入外部存储就像正常工作一样。

4

2 回答 2

1

尽管 Siris_cac 的答案得到了很好的解释,但这并不是导致我的问题的原因。原来我不能使用“file:///mnt/sdcard/appname/image1.jpg”从M中的外部存储加载文件。

我想这可能与http://www.androidpolice.com/2015/05/28/android-m-feature-spotlight-external-storage-can-be-adopted-as-true-internal-storage有关-or-accessed-normally-with-no-additional-apps/

我想我从一开始就错了,在加载图像时不使用 Enviroment.getExternalStorageDirectory(),只有在保存它们时才使用。

所以现在加载我使用的图像:

"file:///" + Environment.getExternalStorageDirectory().getPath() + "/appname/image1.jpg";
于 2015-06-11T11:28:03.860 回答
0

您可以尝试检查权限是否由以下人员授予:

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;
        }
    }
}
于 2015-06-01T08:06:49.327 回答