Android 外置 SD 卡

介绍

在 Android 设备中,外置 SD 卡是一种常见的存储设备,可以用于扩展设备的存储容量。本文将介绍如何在 Android 应用中访问和使用外置 SD 卡,并提供相应的代码示例。

访问外置 SD 卡

在 Android 中,可以通过系统服务 StorageManager 来访问外置 SD 卡。首先,我们需要获取 StorageManager 实例:

StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);

然后,可以使用 getStorageVolumes() 方法来获取所有的存储卷,包括外置 SD 卡:

List<StorageVolume> storageVolumes = storageManager.getStorageVolumes();

接下来,我们可以遍历 storageVolumes 列表,找到外置 SD 卡的存储卷:

for (StorageVolume storageVolume : storageVolumes) {
    if (storageVolume.isRemovable() && !storageVolume.isEmulated()) {
        // 外置 SD 卡的存储卷
        // ...
    }
}

读取外置 SD 卡上的文件

一旦找到外置 SD 卡的存储卷,我们可以使用 getDirectory() 方法获取外置 SD 卡的根目录,并读取其中的文件:

File sdCardRoot = storageVolume.getDirectory();
File file = new File(sdCardRoot, "example.txt");

try {
    FileInputStream fis = new FileInputStream(file);
    // 读取文件内容
    // ...
    fis.close();
} catch (IOException e) {
    e.printStackTrace();
}

写入文件到外置 SD 卡

同样地,我们可以使用 getDirectory() 方法获取外置 SD 卡的根目录,并将文件写入其中:

File sdCardRoot = storageVolume.getDirectory();
File file = new File(sdCardRoot, "example.txt");

try {
    FileOutputStream fos = new FileOutputStream(file);
    // 写入文件内容
    // ...
    fos.close();
} catch (IOException e) {
    e.printStackTrace();
}

权限

在访问外置 SD 卡时,我们需要确保应用已经获得相应的权限。在 AndroidManifest.xml 文件中添加以下权限声明:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

甘特图

以下是一个访问外置 SD 卡的甘特图:

gantt
    title 访问外置 SD 卡

    section 获取 StorageManager
    获取 StorageManager: 0, 1

    section 获取存储卷
    获取存储卷: 2, 4

    section 遍历存储卷
    遍历存储卷: 5, 8

    section 读取/写入文件
    读取/写入文件: 9, 12

类图

以下是访问外置 SD 卡的类图:

classDiagram
    class StorageManager {
        +getStorageVolumes()
    }

    class StorageVolume {
        +isRemovable()
        +isEmulated()
        +getDirectory()
    }

结论

通过使用 StorageManager 可以方便地访问和使用外置 SD 卡。在访问外置 SD 卡时,记得添加相应的权限声明。希望本文对你理解如何在 Android 应用中操作外置 SD 卡有所帮助。

参考资料

  • [Android Developers - External Storage](
  • [Android Developers - StorageManager](