package safeluck.drive.evaluation.util;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.pm.PackageManager;
|
import android.net.Uri;
|
import android.os.Build;
|
import android.provider.Settings;
|
|
|
import androidx.annotation.NonNull;
|
import androidx.core.app.ActivityCompat;
|
import androidx.core.content.ContextCompat;
|
|
import java.util.ArrayList;
|
|
/**
|
* MyApplication2
|
* Created by lzw on 2019/9/9. 17:45:48
|
* 邮箱:632393724@qq.com
|
* All Rights Saved! Chongqing AnYun Tech co. LTD
|
*/
|
public abstract class PermissionManager {
|
private static final String PACKAGE_URL_SCHEME = "package:";
|
private Activity mTargetActivity;
|
|
/**
|
* 权限通过
|
* @param requestCode
|
*/
|
public abstract void authorized(int requestCode);
|
|
/**
|
* 有权限没通过
|
* @param requestCode
|
* @param lackPermissions
|
*/
|
public abstract void noAuthorization(int requestCode,String[] lackPermissions);
|
|
/**
|
* Android 6.0以下的系统不设置校验权限
|
*/
|
public abstract void ignore();
|
|
public PermissionManager(Activity targetActivity){
|
this.mTargetActivity = targetActivity;
|
}
|
|
public void checkPermissions(int requestCode,String... permissions){
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
|
ArrayList<String> lacks = new ArrayList<>();
|
for (String permission:permissions){
|
if (ContextCompat.checkSelfPermission(mTargetActivity.getApplicationContext(),permission) == PackageManager.PERMISSION_DENIED){
|
lacks.add(permission);
|
}
|
}
|
if (!lacks.isEmpty()){
|
//有权限没有授权
|
String[] lacksPermissions = new String[lacks.size()];
|
lacksPermissions = lacks.toArray(lacksPermissions);
|
ActivityCompat.requestPermissions(mTargetActivity,lacksPermissions,requestCode);
|
}else{
|
authorized(requestCode);
|
}
|
}else{
|
// 6.0以下版本不校验权限
|
ignore();
|
}
|
}
|
|
public void recheckPermissions(int requestCode, @NonNull String[] permissions, @NonNull int[] grantReuslts){
|
for (int grantResult :
|
grantReuslts) {
|
if (grantResult == PackageManager.PERMISSION_DENIED) {
|
//未授权
|
noAuthorization(requestCode,permissions);
|
}
|
}
|
authorized(requestCode);
|
}
|
|
public static void startAppSettings(Context context){
|
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.setData(Uri.parse(PACKAGE_URL_SCHEME + context.getApplicationContext().getPackageName() ));
|
context.startActivity(intent);
|
}
|
}
|