Android 11强制规定范围存储。在这种情况下,我希望我的应用程序拍摄一张照片并将其保存到某种应用程序保留的内存中,以便从图库中删除该图片时仍然可用。我正在使用以下方法
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri outputFileUri = Uri.fromFile(newFile);
if (android.os.Build.VERSION.SDK_INT >= 24) {
outputFileUri = FileProvider.getUriForFile(myActivity, BuildConfig.APPLICATION_ID + ".provider", newFile);
cameraIntent.setFlags(FLAG_GRANT_READ_URI_PERMISSION);
cameraIntent.setFlags(FLAG_GRANT_WRITE_URI_PERMISSION);
}
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
问题归结为我如何newFile
在上面的代码段中创建,因为getExternalStoragePublicDirectory()
由于范围存储而不再可用。我已经阅读了文档和各种帖子,但这个问题似乎很广泛和模糊。请避免发布指向MediaStore
API 的裸链接。