在 Android 11 中,应用需要获取运行时权限来访问外部存储空间。如果您的应用需要在外部存储空间中读取或写入文件,则需要更新您的代码以请求适当的权限并使用新的 API。
以下是一个示例,演示如何请求写入外部存储空间的权限并使用新的 API 写入到外部存储空间:
// 检查是否已授予 WRITE_EXTERNAL_STORAGE 权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
// 如果已经授予,则可以执行写入文件的操作
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOCUMENTS), "example.txt");
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write("Hello World");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
// 如果尚未授予 WRITE_EXTERNAL_STORAGE 权限,则请求该权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == 1) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 授予了 WRITE_EXTERNAL_STORAGE 权限,可以执行写入文件的操作
// 代码同上
} else {
// 拒绝授权,无法执行写入文件的操作
}
}
}