菜鸟安卓学习路——简单的运行时权限问题
作者:互联网
Android将现有的权限归成了两类,一类是普通权限,另一类是危险权限
访问https://www.cnblogs.com/plumlee/p/11284614.html查看Android系统中完整的权限列表
运行时权限的核心是由用户授权我们去执行某些危险操作
1,在AndroidManifest.xml文件中声明权限
如:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
//访问联系人权限
(如果是普通权限的话只需要这一步)
2,判断用户是否已经授权
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this,new String []{Manifest.permission.READ_CONTACTS},1); }else { readContacts(); }
利用ContextCompat.checkSelfPermission()方法:
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED
方法有俩参数:context,具体的权限名
如果没有,利用方法ActivityCompat.requestPermissions()向用户申请,该方法有三个参数:context,要申请的权限,请求码
(这里的请求码的作用跟以startActivityForResult中的如出一辙),返回的值(用户的选择)存入grantResult数组中
如果已经授权(granted)直接进行操作
3,重写onRequestPermissionsResult()方法
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode){ case 1: if (grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){ readContacts(); }else { Toast.makeText(this,"You denied the permission",Toast.LENGTH_SHORT).show(); } break; default: } }
对ActivityCompat.requestPermissions()传入的请求码进行筛选,如果grantResult为允许,则进行接下来的操作
如果不允许,用Toast通知用户
标签:Toast,permission,菜鸟,安卓,requestPermissions,grantResults,checkSelfPermission,权限 来源: https://www.cnblogs.com/plumlee/p/11284588.html