Android 11不再支持直接访问应用程序外部存储的文件路径。相反,应该使用FileProvider API来共享文件。
以下是一个使用FileProvider API来共享文件的示例代码:
1.在AndroidManifest.xml中添加以下权限和提供者声明:
2.在res/xml目录下创建file_paths.xml文件并添加以下代码:
以上代码定义了一个路径,用于将应用程序外部存储的文件共享给其他应用程序。该路径指向根目录,即文件共享的根文件夹。
3.在代码中使用以下代码获取文件Uri:
File file = new File(Environment.getExternalStorageDirectory(), "my_file.txt"); Uri uri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file);
以上代码获取了位于外部存储根目录下名为“my_file.txt”的文件的Uri,并使用FileProvider API将其封装为一个内容Uri。
4.访问文件Uri
在访问文件Uri之前,请确保已授予读取和写入外部存储的权限。
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri, "text/plain"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(intent);
以上代码将访问给定的文件Uri。请注意,在使用Intent启动另一个应用程序时,必