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