Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';t在M预览中从外部存储器加载图像_Android_Picasso_Ion_Android 6.0 Marshmallow - Fatal编程技术网

Android Can';t在M预览中从外部存储器加载图像

Android Can';t在M预览中从外部存储器加载图像,android,picasso,ion,android-6.0-marshmallow,Android,Picasso,Ion,Android 6.0 Marshmallow,我有一个在外部存储器上存储图像的应用程序。在我尝试新的M预览版之前,它一直工作得很好 我用毕加索(我甚至试着用Ion)来加载图像,我用“file:///mnt/sdcard/appname/image1.jpg“乌里 我没有收到任何错误,但我猜m已经更改了从外部存储读取的权限。我试过谷歌搜索,但结果是空的 顺便说一句,将图像写入外部存储器的操作与正常操作一样。您可以尝试检查权限是否由以下人员授予: checkCallingOrSelfPermission(Manifest.permission.

我有一个在外部存储器上存储图像的应用程序。在我尝试新的M预览版之前,它一直工作得很好

我用毕加索(我甚至试着用Ion)来加载图像,我用“file:///mnt/sdcard/appname/image1.jpg“乌里

我没有收到任何错误,但我猜m已经更改了从外部存储读取的权限。我试过谷歌搜索,但结果是空的


顺便说一句,将图像写入外部存储器的操作与正常操作一样。

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

checkCallingOrSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
并尝试使用
requestPermissions()
在运行时请求这样的权限

以及, 处理授予的权限结果

@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

我想这可能有点关系

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

因此,现在要加载我使用的图像:

"file:///" + Environment.getExternalStorageDirectory().getPath() + "/appname/image1.jpg";

不过我什么也没变。据我所知,新的许可只有在你基于M构建的情况下才有效?是的。只有当你的e以M为目标时,我想你现在使用的代码在以前的版本上是有效的。是的,它在旧版本的android上非常有效。但你的意思是,几乎所有的应用程序都会崩溃,或者在M上出现意外行为,除非它们得到用M SDK构建的更新?因为我甚至不能在我的旧SDK中使用requestPermissions方法?我在WhatsApp上遇到了类似的问题。该应用程序只会打开一个摄像头实例,但不会打开ImagePicker或Gallery实例。在调用
requestPermissions()
之前,如果生成版本大于M,则可以添加一个检查条件。
"file:///" + Environment.getExternalStorageDirectory().getPath() + "/appname/image1.jpg";