android权限管理

不知道大家有没有做过这个权限管理,我们做了一下,发现小米和OPPO封装的好讨厌,目前发现只会弹出location的permission,而且当拒绝的时候,没有办法再次申请,因为你再次申请的时候,debug会直接跳到申请成功。如果有高手,可以留言说一下


参考博客:http://www.cnblogs.com/xmcx1995/p/5870191.html————原始方法

    http://blog.csdn.net/u013243573/article/details/54426063————---7.0权限

    https://github.com/tbruyelle/RxPermissionsrxpermission———-——github

    http://www.cnblogs.com/whoislcj/p/6090795.html————————--rxpermission介绍

    http://blog.csdn.net/lmj623565791/article/details/50709663————原始方法


我们用的是rxpermission,用法我就再重复一遍,上述有github和相关博客介绍

1、配置:

To use this library your minSdkVersion must be >= 11.

repositories {
    jcenter() // If not already there
}

dependencies {
    compile 'com.tbruyelle.rxpermissions:rxpermissions:0.9.0@aar'
}
如果使用的RxJava2的话使用下面的配置 与RxJava不同的是包名变成了com.tbruyelle.rxpermissions2

dependencies {
    compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.8.2@aar'
}
2、 直接申请权限使用

RxPermissions.getInstance(this)
    .request(permissions)
    .subscribe(new Action1<Boolean>() {
        @Override
        public void call(Boolean granted) {
        if (granted) { // 在android 6.0之前会默认返回true
            // 已经获取权限
            String jpgPath = getCacheDir() + "test.jpg";
            takePhotoByPath(jpgPath, 2);
        } else {
            // 未获取权限
            Toast.makeText(MainActivity.this, "您没有授权该权限,请在设置中打开授权", Toast.LENGTH_SHORT).show();
        }
        }
    });
3、 条件触发获取权限(结合RxBinding使用)

RxView.clicks(findViewById(R.id.request_permission))
    .compose(RxPermissions.getInstance(this).ensure(Manifest.permission.CAMERA))
    .subscribe(new Action1<Boolean>() {
        @Override
        public void call(Boolean granted) {

        if (granted) { // 在android 6.0之前会默认返回true
            // 已经获取权限
            String jpgPath = getCacheDir() + "test.jpg";
            takePhotoByPath(jpgPath, 2);
        } else {
            // 未获取权限
            Toast.makeText(MainActivity.this, "您没有授权该权限,请在设置中打开授权", Toast.LENGTH_SHORT).show();
        }
        }
    });
4、 同时请求多个权限(合并结果)
RxPermissions.getInstance(MainActivity.this).request(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
    .subscribe(new Action1<Boolean>() {
        @Override
        public void call(Boolean granted) {
        if (granted) { // 在android 6.0之前会默认返回true
            // 已经获取权限
            String jpgPath = getCacheDir() + "test.jpg";
            takePhotoByPath(jpgPath, 2);
        } else {
            // 未获取权限
            Toast.makeText(MainActivity.this, "您没有授权该权限,请在设置中打开授权", Toast.LENGTH_SHORT).show();
        }
        }
    });

5、 同时请求多个权限(分别获取结果)
RxPermissions.getInstance(MainActivity.this).requestEach(Manifest.permission.CAMERA,
        Manifest.permission.RECORD_AUDIO)
        .subscribe(new Action1<Permission>() {
            @Override
            public void call(Permission permission) {
            if (permission.name.equals(Manifest.permission.CAMERA)) {
                if (permission.granted) {
                String jpgPath = getCacheDir() + "test.jpg";
                takePhotoByPath(jpgPath, 2);
                } else {
                //  未获取权限
                Toast.makeText(MainActivity.this, "您没有授权该权限,请在设置中打开授权", Toast.LENGTH_SHORT).show();
                }

            } else if (permission.name.equals(Manifest.permission.RECORD_AUDIO)) {

            }
            }
        });

还是那句话,不知道怎么解决小米和OPPO的问题,写这个还是想如果有哪个大神看到,请指教






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值