Android 11(SDK_INT >= 30)后,外部存储权限android.permission.MANAGE_EXTERNAL_STORAGE
Posted zhangphil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 11(SDK_INT >= 30)后,外部存储权限android.permission.MANAGE_EXTERNAL_STORAGE相关的知识,希望对你有一定的参考价值。
从android 11(SDK_INT >= 30)开始,app如果读写外部存储器须申请权限android.permission.MANAGE_EXTERNAL_STORAGE
原先的:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
搭配在AndroidManifest.xml的application里面配置:
android:requestLegacyExternalStorage="true"
已失效。
新的解决方案:
首先在AndroidManifest.xml里面申请权限:
<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
然后在上层Java代码的运行时判断,如果没有获得完全的外部存储器读写权限,则运行时申请:
if (Build.VERSION.SDK_INT >= 30)
if (!Environment.isExternalStorageManager())
Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivity(intent);
return;
/**
开始接着正常的写读写文件操作...
*
/
以上是关于Android 11(SDK_INT >= 30)后,外部存储权限android.permission.MANAGE_EXTERNAL_STORAGE的主要内容,如果未能解决你的问题,请参考以下文章
Android11(api 30)以上设置全屏不起作用的解决方法
Android Studio调用系统的代码中Build.VERSION.SDK_INT >= Build.VERSION_CODES.xxx
Android Studio调用系统的代码中Build.VERSION.SDK_INT >= Build.VERSION_CODES.xxx