如何在android 11中实现存储权限。有人可以分享一个用java实现的例子
Posted
技术标签:
【中文标题】如何在android 11中实现存储权限。有人可以分享一个用java实现的例子【英文标题】:How to implement storage permission in android 11. Can someone share an example implemented in java 【发布时间】:2021-12-20 00:43:56 【问题描述】:Intent chooserIntent = null;
try
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
List<Intent> intentList = new ArrayList<>();
Intent pickIntent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePhotoIntent.putExtra("return-data", true);
takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile(context)));
intentList = addIntentsToList(context, intentList, pickIntent);
intentList = addIntentsToList(context, intentList, takePhotoIntent);
if (intentList.size() > 0)
chooserIntent = Intent.createChooser(intentList.remove(intentList.size() - 1),
"Select photo !");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentList.toArray(new Parcelable[]));
return chooserIntent;
catch (Exception e)
e.printStackTrace();
在将版本设置为 30 后,我的意图大小为 0 ,但在以前的版本中它工作正常。
【问题讨论】:
在清单中添加以下代码后,我可以从图库中选择图像添加权限
`<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>`
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
添加此行清单文件应用程序标记
android:requestLegacyExternalStorage="true"
在你的活动中使用这些变量
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE =
Manifest.permission.WRITE_EXTERNAL_STORAGE
;
在Activity的onCreateView方法中
int permission = ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED)
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
MainActivity.this,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
else
//write code for permission granted
【讨论】:
奇怪的代码。不需要这些权限即可使用 ACTION_PICK 或 ACTION_GET_CONTENT。那么你的想法是什么?以上是关于如何在android 11中实现存储权限。有人可以分享一个用java实现的例子的主要内容,如果未能解决你的问题,请参考以下文章
如何在基于 SQLite 的 recyclerview 中实现 searchview? - 安卓