关于Android M(6.0)动态权限适配的问题

在android 6.0 中,google不再像之前的安装应用时一次性申请app用到的所有权限,而是在用户使用的过程中用到某个权限时才去申请该权限。
首先,6.0中的权限分为3类:
①正常权限:一些基本的权限,不涉及用户隐私的权限。如:INTERNET
②危险权限:需要重点适配的权限。
③特殊权限:(主要在各类安全卫士上用得较多)
SYSTEM_ALERT_WINDOW:设置悬浮窗
WRITE_SEETINGS:修改系统设置

动态权限适配的API
在Android M的SDK, Activity中增加了运行时权限适配的3个API:
//请求权限
void requestPermissions(String[] permissions,int requestCode)
//请求权限后的回调
void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults)
//是否有必要告诉用户需要这个权限的原因
boolean shouldShowRequestPermissionRationale(String permission)

Context 中添加一个检查权限的API:
//用于检测当前app是否具有某个权限
int checkSelfPermission(String permission)

注意:由于以上API在Android M及以上才有,为避免在项目中过多的引入对版本的判断,因此support包23版中添加了对应的API:
ActivityCompat.requestPermissions(String[] permissions,int requestCode)
FragmentActivity.onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults)
boolean ActivityCompat.shouldShowRequestPermissionRationale(String permission)
ContextCompat.checkSelfPermission(String permission)

参考文章:Android M 运行时权限实践全解析

    原文作者:踏雪鸿雁
    原文地址: https://www.jianshu.com/p/aec6a0b3b6b7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞