Android获取文件读写权限教程

1. 整体流程

flowchart TD
    A[创建权限请求] --> B[检查权限状态]
    B --> C{是否已获取权限}
    C -->|是| D[开始文件读写操作]
    C -->|否| E[请求权限]
    E --> F[处理权限请求结果]
    F --> D

2. 每一步操作

1. 创建权限请求

在AndroidManifest.xml文件中添加以下权限:

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

2. 检查权限状态

在Activity中添加以下代码:

// 检查读写权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED) {
    // 未获取读权限
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE_READ);
} else {
    // 已获取读权限
    // 继续执行文件读取操作
    readFile();
}

3. 请求权限

在Activity中添加以下代码:

// 请求读权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE_READ);

4. 处理权限请求结果

在Activity中重写onRequestPermissionsResult方法,并添加以下代码:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == REQUEST_CODE_READ) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 用户同意了读权限
            // 继续执行文件读取操作
            readFile();
        } else {
            // 用户拒绝了权限请求
            // 提示用户打开权限
        }
    }
}

5. 开始文件读写操作

添加读取文件的代码:

// 读取文件操作
File file = new File(Environment.getExternalStorageDirectory(), "example.txt");
try {
    BufferedReader br = new BufferedReader(new FileReader(file));
    StringBuilder text = new StringBuilder();
    String line;
    while ((line = br.readLine()) != null) {
        text.append(line);
        text.append('\n');
    }
    br.close();
    // 在TextView中显示读取的内容
    textView.setText(text.toString());
} catch (IOException e) {
    e.printStackTrace();
}

关系图

erDiagram
    PERMISSION_REQUEST --> PERMISSION_GRANTED : 用户授权
    PERMISSION_GRANTED --> FILE_OPERATION : 开始文件操作
    PERMISSION_REQUEST --> PERMISSION_DENIED : 用户拒绝
    PERMISSION_DENIED --> PERMISSION_SETTING : 提示打开权限设置

通过以上步骤,你就可以成功获取Android文件读写权限并进行相关操作了。祝你学习顺利!