android 11 权限

2021-09-17  本文已影响0人  cain07

Android 10,11 文件存储

https://blog.csdn.net/zw904448290/article/details/114316496

存储目录

https://www.cnblogs.com/whoislcj/p/6137398.html

https://blog.csdn.net/Motejia/article/details/114697683

存储的目录

https://blog.csdn.net/jyfjyt/article/details/87105233

android 11 定位权限 ACCESS_BACKGROUND_LOCATION

Android 11将位置权限分为前台和后台两种权限。前文说的主要是前台权限,授权方式没有变化。应用想要申请后台权限,除了需要在清单文件中额外添加 ACCESSBACKGROUNDLOCATION 权限外,还需要应用主动引导用户到指定页面授权。

https://lbs.amap.com/api/android-location-sdk/guide/utilities/permision_11

image.png

实例代码

@TargetApi(30)
private fun Context.checkBackgroundLocationPermissionAPI30(backgroundLocationRequestCode: Int) {
    if (checkSinglePermission(Manifest.permission.ACCESS_BACKGROUND_LOCATION)) return
    AlertDialog.Builder(this)
        .setTitle(R.string.background_location_permission_title)
        .setMessage(R.string.background_location_permission_message)
        .setPositiveButton(R.string.yes) { _,_ ->
            // this request will take user to Application's Setting page
            requestPermissions(arrayOf(Manifest.permission.ACCESS_BACKGROUND_LOCATION), backgroundLocationRequestCode)
        }  
        .setNegativeButton(R.string.no) { dialog,_ ->
            dialog.dismiss()
        } 
        .create()
        .show()
        
}

可以做个判断 弹框提示用户 去设置里面获取权限

if (Build.VERSION.SDK_INT == 30 && "android.permission.ACCESS_BACKGROUND_LOCATION".equals(permissions[0])){
                    showSettings("需要后端定位权限", Settings.ACTION_SETTINGS);
                }

各个系统 获取位置权限
https://blog.csdn.net/zwluoyuxi/article/details/109485098

存储权限适配
https://www.jianshu.com/p/e94cea26e213?utm_campaign=haruki

https://blog.csdn.net/Motejia/article/details/114697683

Android11 更新了新的存储权限分区存储,

其中Android10 时候也对存储权限做了更新android:requestLegacyExternalStorage="true"

当我们升级到Android11时候,首先在清单文件中的application声明:

android:requestLegacyExternalStorage="true"
android:preserveLegacyExternalStorage="true"//升级保留旧版存储权限

然后在声明权限:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>//可读取所有包名
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

//设备文件广泛访问,核心用例app
然后在Activity中进行所有文件存储访问权限:

//Android11存储

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) {
    Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
    startActivity(intent);
}
上一篇下一篇

猜你喜欢

热点阅读