如何指定外部记忆卡上的目录路径?

7次阅读
没有评论

问题描述

当前应用将文件保存在内部存储的”mydir”中:
/storage/emulated/0/mydir

现在,希望将这些文件保存到外部记忆卡上。但是在尝试使用不同地址时均未成功(如 “/SanDisk SD card/mydir”, “/storage/SanDisk SD card/mydir”, “/storage/emulated/SanDisk SD card/mydir”)。

在 Android 9版本的 Redmi 8 设备上,设备管理器显示记忆卡路径为“SanDisk SD card”。需要确定正确的路径格式以便将文件保存到外部记忆卡上的自定义目录(如:”mydir”)中。

解决方案

正确的外部存储路径

根据StackExchange的回答,文件保存在外部SD卡上时应使用以下地址:
/storage/36E2-14BB/mydir

这里的关键在于:
/storage/36E2-14BB 是由设备自动分配给每一个外部SD卡的唯一路径。其中 36E2-14BB 就是此SD卡的唯一标识符,不同SD卡会对应不同的标识符。

在程序中查询和使用此标识符需要调用如下的API:
“`java
if (Environment.isExternalStorageRemovable()) {
String externalDirPath = Environment.getExternalStorageDirectory() + “/36E2-14BB”;
File dir = new File(externalDirPath);
if (dir.exists()){
// 这里可以创建对应的目录

   }

}
“`

注意事项

  1. 权限声明:在使用Android 10及以上的操作系统上,需要应用具有读写外部存储的权限。这通常会通过以下方式实现:
    • AndroidManifest.xml文件中声明相关权限:
      xml
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  2. 对于较新版本的Android系统(Android 7及以上),可能还需应用动态申请这些权限。

  3. 环境检查:在尝试访问外部记忆卡之前,需要确保设备确实支持可移动内存,并且必须使用isExternalStorageRemovable()方法来判断外部存储是否处于可读写状态。

  4. 安全问题:当进行文件操作时需注意处理异常情况及确保应用的正常运行不受影响。并且尽量减少不必要的读写操作和访问,保障设备性能。

通过以上步骤,我们可以更加准确地定位外部记忆卡上的目标路径,并按要求将文件保存至指定目录中去。在整个过程中遵循了相关API与权限使用规范来提高程序稳定性和安全性。

正文完