Android在声明权限时是在AndroidManifest.xml文件中使用<uses-permissions>标签来声明权限的,Android运行时权限的功能是用户不需要在安装软件的时候一次性授权所有的申请,而是可以在软件的使用过程中对某项申请进行授权。
Android权限分为两类:普通权限和危险权限
- 普通权限:不会直接危险到用户的安全和隐私的权限,系统会自动帮我们进行授权,不需要用户手动授权了
- 危险权限:可能会触及到用户隐私以及对设备的安全性造成影响的权限,必须用户手动授权,否则程序相应的功能就无法使用。
表格中的每个危险权限都属于一个权限组,我们在进行授权的时候使用的是权限名,一旦我们同意授权了,那么该权限的权限组中的所有权限也会同时被授权。
运行时授权核心就是在程序运行过程中,由用户授权我们去执行某些危险操作。
- 首先我们要判断用户是否已经授权
if(ContextCompat.checkSelfPermission(Context,具体的权限名)!=PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(activity实例,申请的权限名数组(String类型的),请求码); //向用户申请授权
}else{
//已经授权后执行相应的逻辑
}
- 上面调用完requestPermissions()方法后,系统会弹出一个申请权限的对话框,无论选择哪种结果,最终都会回调到onRequestPermissionsResult()方法中,授权结果在grantResults参数中
@Override
public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResult){
switch(requestCode){
//授权请求码中对应的授权结果处理
}
}
网友评论