Android M权限动态获取

最近整理了一个Android 6.0以上的权限获取工具,要用到就直接复制粘贴好了

直接看代码

用法

采用Glide的Fragment依附思想,无需继承Activity,傻瓜式调用,传入权限的String参数为可变长度型,支持2种模式

  • 普通的Callback回调
  • 通过RxJava2生成事件流

Callback用法:

//PermissionManager在action包下
PermissionManager.with(this)
                 .request(new PermissionManager.Callback() {
                        @Override
                        public void call(PermissionResult result) {
                            process(result);
                        }
                    }, Manifest.permission.WRITE_EXTERNAL_STORAGE);

RxJava2用法

//PermissionManager在rx包下
PermissionManager.with(this)
        .request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
        .subscribe(new Consumer<PermissionResult>() {
            @Override
            public void accept(@NonNull PermissionResult permissionResult) throws Exception {
                process(permissionResult);
            }
        });

返回的权限结果处理实例:

private void process(PermissionResult permissionResult) {
    if (permissionResult.isSuccessful()) {
        Toast.makeText(getApplicationContext(), "成功GET√", Toast.LENGTH_SHORT).show();
        return;
    }
    if (permissionResult.isDisable()) {
        //用户傲娇的勾选了不再提示,并且拒绝了权限
        Toast.makeText(getApplicationContext(), "权限被禁用啦,请手动开启权限", Toast.LENGTH_SHORT).show();
        PermissionManager.toSetting(MainActivity.this);
    } else {
        //用户拒绝了权限
        Toast.makeText(getApplicationContext(), "宝宝摔倒了,要开启权限才能爬起来~~~", Toast.LENGTH_SHORT).show();
    }

}

Ps:request方法用@TargetApi修饰,API23以下不执行

效果

最后附上一些6.0以上的危险权限(默认不开启)

危险权限

9个大类分别是

  • 读写日历
  • 相机
  • 通讯录的读写
  • 位置
  • 麦克风
  • 通话相关
  • 传感器
  • 短信相关
  • 手机存储

其中在6.0以上,在对应分组下只要有一条权限被授权,当前分组下的所有权限都被授权

点击获取代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容