这是一个已知的问题,可以使用以下代码示例解决:
在AndroidManifest.xml文件中添加以下权限:
在代码中,使用以下方法检查是否有适当的权限:
private boolean checkStoragePermission() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return true;
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
return true;
}
if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)
&& shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
showPermissionRationaleDialog();
} else {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE_PERMISSION_CODE);
}
return false;
}
这将确保您的应用程序在访问存储时具有必要的权限。
如果您已经在打开文件时崩溃,请使用以下代码示例进行文件访问:
Uri uri = data.getData();
if (uri != null) {
String filePath = FileUtils.getPath(this, uri);
if (filePath != null) {
File file = new File(filePath);
// Handle the file
}
}
这将使用文件路径访问文件,并且您可以在应用程序中处理文件。
使用上述代码示例,您的应用程序将不会在Android 11上崩溃,您可以从最近和WhatsApp文档文件夹上传文档。