android权限管理

来源:互联网 发布:可以用淘宝贷的口子 编辑:程序博客网 时间:2024/06/10 20:38

不知道大家有没有做过这个权限管理,我们做了一下,发现小米和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的问题,写这个还是想如果有哪个大神看到,请指教






原创粉丝点击