当前位置:实例文章 » JAVA Web实例» [文章]android 高版本sd卡目录读写权限

android 高版本sd卡目录读写权限

发布人:shili8 发布时间:2025-02-27 12:13 阅读次数:0

**Android 高版本 SD 卡目录读写权限**

随着 Android 系统的更新,SD 卡目录读写权限变得越来越复杂。从 Android10 开始,系统对外部存储设备(如 SD 卡)的访问控制更加严格。为了确保应用程序能够正常工作和读取/写入 SD 卡上的文件,我们需要了解这些新规则并进行相应的调整。

**Android10 之后的变化**

在 Android10 之前,应用程序可以通过 `READ_EXTERNAL_STORAGE` 和 `WRITE_EXTERNAL_STORAGE` 权限轻松访问外部存储设备。然而,从 Android10 开始,这些权限被废弃,并且系统对外部存储设备的访问控制更加严格。

**新规则**

从 Android10 开始,应用程序需要通过以下方式来读取和写入 SD 卡上的文件:

1. **获取 `READ_EXTERNAL_STORAGE` 权限**:虽然 `WRITE_EXTERNAL_STORAGE` 权限被废弃,但 `READ_EXTERNAL_STORAGE` 权限仍然有效。然而,这个权限仅允许应用程序读取外部存储设备上的文件,而不允许写入。
2. **使用 `Environment.getExternalStorageDirectory()` 获取外部存储设备的根目录**:通过这个方法,应用程序可以获取外部存储设备的根目录,然后根据需要进行读取和写入操作。
3. **检查外部存储设备是否可用**:在尝试读取或写入外部存储设备之前,应用程序应该检查外部存储设备是否可用。

**示例代码**

以下是示例代码,演示了如何在 Android10 之后的版本中读取和写入 SD 卡上的文件:

javaimport android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;

public class ExternalStorageExample {

 private static final int REQUEST_EXTERNAL_STORAGE =1;

 public void readExternalStorage() {
 // 检查外部存储设备是否可用 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
 // 获取外部存储设备的根目录 String externalStorageDirectory = Environment.getExternalStorageDirectory().getPath();

 //读取外部存储设备上的文件 File file = new File(externalStorageDirectory, "example.txt");
 if (file.exists()) {
 try {
 BufferedReader reader = new BufferedReader(new FileReader(file));
 String line;
 while ((line = reader.readLine()) != null) {
 System.out.println(line);
 }
 reader.close();
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 }
 }

 public void writeExternalStorage() {
 // 检查外部存储设备是否可用 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
 // 获取外部存储设备的根目录 String externalStorageDirectory = Environment.getExternalStorageDirectory().getPath();

 // 写入外部存储设备上的文件 File file = new File(externalStorageDirectory, "example.txt");
 try {
 BufferedWriter writer = new BufferedWriter(new FileWriter(file));
 writer.write("Hello, World!");
 writer.close();
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 }

 public void requestExternalStoragePermission() {
 // 请求 `READ_EXTERNAL_STORAGE` 权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
 int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
 if (permission != PackageManager.PERMISSION_GRANTED) {
 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE);
 }
 }
 }

}


**注意事项**

* 在 Android10 之后的版本中,应用程序需要通过 `READ_EXTERNAL_STORAGE` 权限来读取外部存储设备上的文件。
* 应用程序需要检查外部存储设备是否可用,然后根据需要进行读取和写入操作。
* 使用 `Environment.getExternalStorageDirectory()` 获取外部存储设备的根目录,并且使用 `File` 类来读取和写入外部存储设备上的文件。

**总结**

在 Android10 之后的版本中,应用程序需要通过 `READ_EXTERNAL_STORAGE` 权限来读取外部存储设备上的文件。同时,应用程序需要检查外部存储设备是否可用,然后根据需要进行读取和写入操作。使用 `Environment.getExternalStorageDirectory()` 获取外部存储设备的根目录,并且使用 `File` 类来读取和写入外部存储设备上的文件。

相关标签:android
其他信息

其他资源

Top