使用“Environment.getExternalStorageDirectory()”无法将照片保存到SD卡中

时间:2016-03-09 15:54:13

标签: android save

我查看了一些线程,了解如何将照片保存到SD卡中。所有人都说使用“Environment.getExternalStorageDirectory()”来获取SD卡路径。我试过了,但是我得到了“/ storage / emulated / 0 /”这不是SD卡通过电话。任何人都可以帮助我吗?

我的设备是三星Galaxy J7和A5。

我的另一部分代码使用DowloadManager从url保存照片。我想知道如何设置它以保存到SD卡。

    DownloadManager mgr = (DownloadManager) mPhotosViewActivity.getSystemService(Context.DOWNLOAD_SERVICE);
    String uRl = imageUrl;
    Uri downloadUri = Uri.parse(uRl);
    DownloadManager.Request request = new DownloadManager.Request(
        downloadUri);

    request.setAllowedNetworkTypes(
        DownloadManager.Request.NETWORK_WIFI
                | DownloadManager.Request.NETWORK_MOBILE)
        .setAllowedOverRoaming(false).setTitle("MyFolder")
        .setDescription("Photo downloaded.")
        .setDestinationInExternalPublicDir("/MyFolder", "test2.jpg");

最后我发现我正在使用Lollipop,我必须使用“存储访问框架”作为this link

2 个答案:

答案 0 :(得分:1)

在Android 4.4及更高版本中,您可以在getExternalFilesDirs()上使用getExternalCacheDirs()getExternalMediaDirs()Context(注意:所有都是复数形式)。如果他们返回2个以上的条目,则第二个和后续条目将在可移动存储上。这些目录可以在没有任何权限的情况下读取和写入。

或者,在Android 4.4及更高版本中,您可以使用the Storage Access Framework来询问用户存储照片的位置。用户可以选择在可移动存储上选择位置。

否则,在Android 4.4及以上,you do not have direct access to the filesystem of removable storage

Environment.getExternalStorageDirectory()适用于external storage。通常,这不在可移动媒体上。

答案 1 :(得分:1)

{{1}}

有关详细信息,请参阅this答案。

希望它能够发挥作用。