一、权限检查的原因
Google 在Android 6.0时提出了运行时权限管理机制,在Android 6.0之前,所申请的权限只需要在AndroidManifest.xml列举就可以,从而容易导致一些安全隐患,因此,在Android 6.0 时,Google 为了更好的保护用户隐私提出了新的权限管理机制,同时将其分为两大类:
(1)Normal Permissions 一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;
(2)Dangerous Permission一般是涉及到用户隐私的,需要用户进行授权(动态申请),比如读取SIM卡状态、访问通讯录、SD卡读写等。
二、通过 adb shell pm list permissions -d -g 可以查看 Dangerous Permission (以权限组形式)
还能看到系统中我们系统部门给加的一些权限:
三、逻辑流程图
四、代码细节
1. 所有用到的权限要在Manifest.xml文件中声明
2. MainActivity的onCreate中:主动发出权限请求
androidx.core.app.ActivityCompat#requestPermissions
3. 在回调方法中做权限请求的判断限制
androidx.core.app.MainActivity#onRequestPermissionsResult