在 Android 中,获取 USB 外部存储目录的步骤如下:
1. 检查是否已获得 `READ_EXTERNAL_STORAGE` 和 `WRITE_EXTERNAL_STORAGE` 权限:
```java
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
```
2. 使用 `Environment.getExternalStoragePublicDirectory()` 方法获取 USB 外部存储目录:
```java
File usbDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
```
3. 如果需要访问特定的 USB 设备,可以使用 `StorageVolume` 类来获取目录:
```java
StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
List
for (StorageVolume volume : storageVolumes) {
if (volume.getDescription(this).contains("USB")) {
File usbDirectory = volume.getDirectory();
// 执行相关操作
}
}
```
需要注意的是,自 Android 11 起,应用需要动态申请存储权限,并且必须使用 `MediaStore` API 来访问 USB 设备上的文件。此外,在 Android 10 及更高版本上,应用需要使用 `scoped storage` 来访问外部存储,这会有一些限制。具体的使用方法可以参考 Android 官方文档。