android 13 怎么请求文件权限 代码
时间: 2025-01-04 15:37:30 浏览: 3
在Android 13及更高版本中,由于隐私增强,请求存储权限变得更加复杂。你需要使用`ACTION_EXTERNAL_STORAGE`和`Manifest.permission.READ_EXTERNAL_STORAGE`或`WRITE_EXTERNAL_STORAGE`权限,并在运行时动态申请。以下是获取读取外部存储权限的一个示例:
```java
// 定义一个变量用于保存权限状态
private int permissionState = ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
// 请求权限的方法
public void requestPermission() {
if (permissionState != PackageManager.PERMISSION_GRANTED) {
// 没有权限,请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, FILE_PERMISSION_REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == FILE_PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限已授予,可以访问文件
permissionState = PackageManager.PERMISSION_GRANTED;
// 这里可以开始访问文件操作
} else {
// 权限未授予,处理拒绝情况
Toast.makeText(this, "Storage permission denied", Toast.LENGTH_SHORT).show();
}
}
}
```
在这个例子中,`FILE_PERMISSION_REQUEST_CODE`是你自定义的请求码,用于在`onRequestPermissionsResult`方法中识别请求。记得在`AndroidManifest.xml`中声明相应的权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
阅读全文