在Android 11中,由于隐私政策的改变,应用程序不能再直接访问文件路径。相反,应使用以下示例代码中所示的新方法访问文件。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
try {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, READ_REQUEST_CODE);
} catch (ActivityNotFoundException e) {
//在此处理异常情况
}
} else {
//在这里访问文件,例如:File file = new File(Environment.getExternalStorageDirectory().getPath() + "/filename");
}
此示例中,我们首先检查设备是否高于或等于Android 11。如果是,我们将调用“ACTION_OPEN_DOCUMENT”以选择要打开的文档类型,并将其置于可打开类别中。最后,通过调用“startActivityForResult”来启动该活动。
如果设备操作系统低于Android 11,则可以按照常规方法访问文件路径,例如使用“ Environment.getExternalStorageDirectory()”方法,并将其与文件名拼接在一起(如示例中所示)。
上一篇:Android11无法获取图像。