Android 11引入了更严格的安全策略,禁止在外部存储上创建和修改文件,除非应用被授予了特殊的权限。要在应用中访问外部存储,请先请求以下权限:
然后,您需要在运行时请求权限。示例代码如下所示:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE); }
最后,如果您需要在外部存储上创建或修改文件,您还需要使用以下代码处理FileProvider:
File file = new File(Environment.getExternalStorageDirectory(), "test.txt"); Uri uri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileprovider", file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(uri); intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(intent);