本文主要是介绍android11以上SD卡存储权限适配申请问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Android 11(API级别30)及以上版本中,应用需要获得MANAGE_EXTERNAL_STORAGE
权限。这个权限允许应用访问设备上的所有文件,而不仅仅是它自己的文件。然而,由于这个权限对用户的隐私有潜在的影响,因此Google对其使用进行了严格的限制,在申请Manifest.permission.MANAGE_EXTERNAL_STORAGE权限的时候默认是拒绝且不再提醒的
。
推荐的做法是使用MediaStore API或存储访问框架(SAF)来访问共享存储空间上的文件,而不是请求MANAGE_EXTERNAL_STORAGE
权限。然而,如果你的应用确实需要这个权限,你可以通过以下步骤来请求它:
在AndroidManifest.xml
中声明权限:
首先,你需要在应用的AndroidManifest.xml
文件中声明MANAGE_EXTERNAL_STORAGE
权限。
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/> |
if ((ContextCompat.checkSelfPermission(this, Manifest.permission.MANAGE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) ) {//如果没有权限,获取权限{ Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent);
}
-
hasManageExternalStoragePermission
方法用于检查应用是否已经获得了MANAGE_EXTERNAL_STORAGE
权限。如果没有,就创建一个Intent
来启动系统设置页面,让用户可以授予这个权限。 -
处理权限授予结果:
用户可以在系统设置中授予或拒绝这个权限。你的应用无法直接检测到这个结果,但你可以监听onActivityResult
回调来检查用户是否返回到了你的应用。然而,由于这是一个特殊权限,你无法直接知道用户是否授予了权限。
翻译
搜索
复制
这篇关于android11以上SD卡存储权限适配申请问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!