1.Android6.0(APIlevel23)开始targetSdkVersion>=23的应用必须在运行时动态申请权限
2.权限请求对话框是操作系统进行管理的,应用无法也不应该干预。
3.系统对话框描述的是权限组而不是某个具体权限
4.调用requestPermissions并不意味着系统一定会弹出权限请求对话框,也就是说不能假设调用该方法后就发生了用户交互,因为如果用户之前勾选了“禁止后不再询问”或者系统策略禁止应用获取权限,那么系统会直接拒绝此次权限请求,没有任何交互
5.如果某个权限跟应用的主要功能无关,如应用中广告可能需要位置权限,用户可能很费解,此时在申请权限之前弹出对话框向用户解释为什么需要这个权限是个不错的选择。但不要在所有申请权限之前都弹出对话框解释,因为频繁地打断用户的操作或让用户进行选择容易让用户不耐烦
6.Fragment中的onRequestPermissionsResult方法只有在使用Fragment#requestPermissions方法申请权限时才可能接收到回调,建议将权限放在所属Activity中申请和处理
7.应用应该尽量少地申请权限,像让用户拍一张照片或者选择一张图片完全不需要相机权限和外存权限,可以通过隐式Intent拉起系统相机或其他应用完成,应用只需要在onActivityResult回调中接收数据就行了。但是有一点一定要注意,如果你在AndroidManifest.xml文件中声明了相机权限,你就必须得动态申请并获得相机权限才能拉起系统相机.