写在基类中,安卓6.0以上权限请求管理,没有做版本判断,直接做判断请求
/**
* 权限请求成功回调
* @param perissions 请求成功的权限集合
*/
public void perissionRequestSuccessCallback(String perissions[]){
}
/**
* 权限请求失败回调
* @param perissions 请求失败的权限集合
*/
public void perissionRequestFailCallback(String perissions[]){
}
private final int permissionsRequestCode = 0;
public void perissionRequest(String permissions[]){
List<String> noPermissions = new ArrayList<>();
for(int i = 0 ; i < permissions.length ; i++){
if (ContextCompat.checkSelfPermission(context,
permissions[i])
!= PackageManager.PERMISSION_GRANTED) {
noPermissions.add(permissions[i]);
}
}
if(noPermissions.size() != 0){
String[] strings = new String[noPermissions.size()];
for(int i = 0 ; i < noPermissions.size() ; i++){
strings[i] = noPermissions.get(i);
}
ActivityCompat.requestPermissions(this, strings,
permissionsRequestCode);
}else {
perissionRequestSuccessCallback(new String[]{});
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case permissionsRequestCode: {
// If request is cancelled, the result arrays are empty.
List<String> successPermissionList = new ArrayList<>();
List<String> failPermissionList = new ArrayList<>();
if(grantResults.length > 0 && grantResults.length == permissions.length) {
for (int i = 0; i < permissions.length; i++) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
successPermissionList.add(permissions[i]);
LogUtils.logI("用户同意权限", "user granted the permission!" + permissions[i]);
} else {
LogUtils.logI("用户不同意权限", "user denied the permission!" + permissions[i]);
failPermissionList.add(permissions[i]);
}
}
}else {
for(int i = 0 ; i < permissions.length ; i++){
failPermissionList.add(permissions[i]);
}
}
String[] successPermissions = new String[successPermissionList.size()];
for(int i = 0 ; i < successPermissionList.size() ; i++){
successPermissions[i] = successPermissionList.get(i);
}
String[] failPermissions = new String[failPermissionList.size()];
for(int i = 0 ; i < successPermissionList.size() ; i++){
failPermissions[i] = failPermissionList.get(i);
}
perissionRequestSuccessCallback(successPermissions);
perissionRequestFailCallback(failPermissions);
return;
}
}
}