/*从Android 6.0开始 权限 有一部分就不能正常申请。
我们必须动态申请权限,不然我们的软件会出问题。
我想聪明的你已经看到了。
我们 代码笔记App 也是 一开始打开它就会弹出一个窗口 什么储存啊?之类的
但是我们回想过来这些需要一个一个判断吗? 当然不需要(›´ω`‹)
*/
//判断权限是否系统给予了
if (ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
}else{
//
}
/*
这里涉及到一个API,ContextCompat.checkSelfPermission,主要用于检测某个权限是否已经被授予,方法返回值为PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。
当返回DENIED就需要进行申请授权了。
*/
// 如果,他返回DENIED 那咱们就可以开始申请了
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
/*该方法是异步的,第一个参数是Context;
/*第二个参数是需要申请的权限的字符串数组;
/*第三个参数为requestCode,主要用于回调的时候检测。
/*可以从方法名requestPermissions以及第二个参数看出,
/* 是支持一次性申请多个权限的,系统会通过对话框逐一询问用户是否授权。
*/
// 好了,我们申请权限已经弄了 。但是我们不可能再让用户退出,然后再进来。用这样检测,是否系统几率软件的权限,会使用户很反感。让我们来设置一下监听吧!
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
}
}
/**
/*
/* ok,对于权限的申请结果,首先验证requestCode定位到你的申请,然后验证grantResults对应于申请的结果
/*这里的数组对应于申请时的第二个权限字符串数组。
/*如果你同时申请两个权限,那么grantResults的length就为2,分别记录你两个权限的申请结果。
/*如果申请成功,就可以做你的事情了~
/*
/* 申请失败就退出
/*
/*
/*
/*
/*
/* */
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持以下吧
请登录后发表评论
注册
社交帐号登录