Android 6.0(API 23)之前应用的权限在安装时全部授予,运行时应用不再需要询问用户,在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在运行时根据用户的需要动态授予。这样就不需要在安装时被强迫同意某些权限。本人不才,发现一个开源的第三方库,使用时候时很方便的,废话不多直接上代码。
Gradle:
compile 'me.weyye.hipermission:library:1.0.3'
/** * 申请单个权限 * * @param peimission 需要申请获取的权限 */ public void requsestPermission(String peimission) { HiPermission.create(BaseActivity.this).checkSinglePermission(peimission, new PermissionCallback() { @Override public void onClose() { } @Override public void onFinish() { } /** * 权限请求失败 */ @Override public void onDeny(String permisson, int position) { Toast.makeText(BaseActivity.this, R.string.permissionfail, Toast.LENGTH_SHORT).show(); finish(); } /** * 权限请求成功或者权限已经取得 */ @Override public void onGuarantee(String permisson, int position) { } }); }
举个例子 比如申请一个定位权限 只需代码
requsestPermission(Manifest.permission.ACCESS_COARSE_LOCATION);
这样就轻松搞定定位权限的申请
注意
清单文件一定要注册申请的权限,不然申请后会默认拒绝,而且设置-权限管理界面也无法看到此权限
以下原因不会弹框
- 6.0以下版本(系统自动申请)
- 暂时发现vivo、oppo、魅族的6.0以上版本
因为这些厂商修改了6.0系统申请机制,他们修改成系统自动申请权限了。也就是说这些系统会跟以前 6.0 以下的版本一样,需要用到权限的时候系统会自动申请,就算我们主动申请也是没用的