android 6.0权限移除,Android6.0权限处理

新增API

1)ContextCompact.checkSelfPermission

检查自身是否具有权限

2)ActivityCompact.requestPermissions()

申请权限,由于ActivityCompact是继承自ContextCompact,所以1)也可以用ActivityCompact

3)onRequestPermissionsResult()

由于申请权限是异步的,所以我们需要一个回调来处理用户选择的结果。

如果用户同意给权限,该怎么做,不同意给权限,该怎么做。

4)ActivityCompact.shouldShowRequestPermissionRationale

给用户解释此权限的用途

注意:

如果申请到同一组的任何一个权限被授权了,其他权限也自动被授权。比如 android.permission.READ_EXTERNAL_STORAGE 被授权了,那么应用也拥有了**android.permission.WRITE_EXTERNAL_STORAGE **权限。

查看危险权限:

输入命令 adb shell pm list permissions -d -g 回车即可看到危险权限组

废话就不说多了,直接上项目中的定位教程:

在AndroidManifest文件中添加需要的权限。

这个步骤少不了,毕竟有低版本需要申请。

检查应用有没有权限

if (ContextCompat.checkSelfPermission(Activity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { boolean shouldShow = ActivityCompat.shouldShowRequestPermissionRationale(Activity, Manifest.permission.ACCESS_COARSE_LOCATION); if (!shouldShow) { //用户还没有彻底禁止弹窗 ActivityCompat.requestPermissions(get_Activity(), new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSIONS_REQUEST_LOCATION); } else { //这里已经是用户彻底禁止授权,在这里进行说明,一般会提示用户进入权限设置 MessageTools.showDialog(get_Activity(), "提示", "你已关闭定位权限,可能导致你无法正常使用", false, "确定", null); } }else{ //已经授权了 mLocationClient.startLocation(); //执行定位 }

申请权限 ActivityCompact.requestPermissions()

ActivityCompat.requestPermissions(Activity, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSIONS_REQUEST_LOCATION);

该方法是异步的,第一个参数是Activity;第二个参数是需要申请的权限的字符串数组;第三个参数为requestCode,主要用于回调的时候检测。可以从方法名requestPermissions

以及第二个参数看出,是支持一次性申请多个权限的,系统会通过对话框逐一询问用户是否授权。

处理权限申请回调

// 授权的结果回调

@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == MY_PERMISSIONS_REQUEST_LOCATION) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { mLocationClient.startLocation(); } else { Toast.makeText(mContext, "您没有给应用授于定位的权限", Toast.LENGTH_SHORT).show(); } return; } super.onRequestPermissionsResult(requestCode, permissions, grantResults); }

大家可以把这些授权的代码封装起来,写在基类中,这样项目中的代码看起来就不会冗余了,github上面也有一些开源库,有需要的可以去了解一下,我在这里就不展开讲解了。

ok,到这里6.0的权限教程已经完毕了,大家可以开启你的学霸模式吧,撸码去吧。

你可能感兴趣的:(android,6.0权限移除)