Android打开APP会有权限询问

打开APP会有权限询问,比如打开摄像头权限,如图

Android打开APP会有权限询问

文章插图
只要你在.xml中配置了修改权限,那么就会自动询问权限 , 如下代码:

HTML
但是?。。。。。。。。。。。。『芏嗍焙虿唤凶远?,怎么办?首先
为什么不自动询问权限?
经过测试发现 ,  6.0以后的系统都不会进行权限询问,要分为两种情况:
情况1:直接安装apk文件不进行询问 。
这种情况,其实是已经询问了APP权限的了,就是在你安装APK的时候询问的,6.0以后的系统在打开apk文件安装的时候会显示apk需要的权限列表 , 这时候权限默认是禁止的,如果你不修改就直接安装,那么启动APP后是不会询问权限的 。
情况2:手机应用商店安装APP 。
这种情况,手机系统会认为没有询问过你权限 , 所以APP运行起来会询问.xml中配置了的权限 。
Android打开APP会有权限询问

文章插图
主动进行权限申请询问
不管是哪种情况,你自己使用代码来检查权限和申请权限就会非常稳妥 。
检查是否开启权限代码
ContextCompat.checkSelfPermission(LiveauthorActivity.this, android.Manifest.permission.CAMERA)
Java
此方法会返回一个int类型,一般是0和-1两个值 。
对应.和.
. -1 表示没有获得对应权限
. 表示已经获得权限
所以,代码改良为
if (ContextCompat.checkSelfPermission(LiveauthorActivity.this, android.Manifest.permission.CAMERA)== PackageManager.PERMISSION_DENIED){//判断为没有权限 , 换起权限申请询问ActivityCompat.requestPermissions(LiveauthorActivity.this, new String[]{android.Manifest.permission.CAMERA},1);}else {//判断已经获取权限后的操作}
Android打开APP会有权限询问

文章插图
Java
其中主动申请权限询问的代码为
ActivityCompat.requestPermissions(LiveauthorActivity.this, new String[]{android.Manifest.permission.CAMERA},1);
Java
注意:上方为当前类
权限询问后的回调
权限是否获取成功,有一个回调,在当前中重写方法()
@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {switch (requestCode){case 1://此处判断grantResults数组的长度,如果和你申请的权限个数一致,那么申请权限成功,然后做对应操作break;}}
Java
:对应申请权限时的第三个参数
:申请的权限列表
【Android打开APP会有权限询问】:申请权限成功个数