一个帮助你完成 Android M 运行时权限检查的库。
compile 'com.werb.permissionschecker:permissionschecker:last-version'
<dependency>
<groupId>com.werb.permissionschecker</groupId>
<artifactId>permissionschecker</artifactId>
<version>last-version</version>
<type>pom</type>
</dependency>
- 第一步:在需要相关权限的地方定义权限数组(同时在 AndroidManifest.xml 中声明)
static final String[] PERMISSIONS = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE
};
- 第二步:初始化 PermissionsChecker
permissionChecker = new PermissionChecker(this); // 初始化,必需
permissionChecker.setTitle(getString(R.string.check_info_title)); // 权限拒绝后的提示,非必需
permissionChecker.setMessage(getString(R.string.check_info_message)); // 不写会有默认值,如上方截图所示
- 第三步:判断权限
// check if lack Permissions
if (permissionChecker.isLackPermissions(PERMISSIONS)) {
permissionChecker.requestPermissions();
} else {
// 执行你的相关操作
}
- 第四步:权限回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case PermissionChecker.PERMISSION_REQUEST_CODE:
if (permissionChecker.hasAllPermissionsGranted(grantResults)) {
// 执行你的相关操作
} else {
// 权限拒绝后的提示
permissionChecker.showDialog();
}
break;
}
}
部分国产手机修改了权限设置,若有异常情况出现,请及时提 issue 联系我 ,谢谢
这里会收集一些已知问题,若有很好的处理方法,也请及时提 issue 联系我
- 申请 android.permission.CALL_PHONE 时,当遇到 intent.setAction(Intent.ACTION_CALL) 小米手机会走自己的权限提示