package com.doumee.keyCabinet.utils.update;
|
|
import android.content.ActivityNotFoundException;
|
import android.content.ComponentName;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.net.Uri;
|
import android.os.Build;
|
import android.text.TextUtils;
|
import android.widget.Toast;
|
|
import androidx.annotation.NonNull;
|
import com.doumee.keyCabinet.BuildConfig;
|
import com.doumee.keyCabinet.R;
|
import com.yanzhenjie.permission.Action;
|
import com.yanzhenjie.permission.AndPermission;
|
|
import java.util.List;
|
|
public class PermissionUtils {
|
public interface CallBack {
|
void sucess();
|
|
void fail(List<String> permissions);
|
}
|
|
public static void getPermission(Context context, CallBack callBack, @NonNull String... permissions){
|
AndPermission.with(context)
|
.runtime()
|
.permission(permissions)
|
//.rationale(new RuntimeRationale())
|
.onGranted(new Action<List<String>>() {
|
@Override
|
public void onAction(List<String> permissions) {
|
callBack.sucess();
|
}
|
})
|
.onDenied(new Action<List<String>>() {
|
@Override
|
public void onAction(@NonNull List<String> permissions) {
|
callBack.fail(permissions);
|
}
|
})
|
.start();
|
}
|
|
public static void getPermission2(Context context, final CallBack callBack, @NonNull String[]... permissions){
|
AndPermission.with(context)
|
.runtime()
|
.permission(permissions)
|
//.rationale(new RuntimeRationale())
|
.onGranted(new Action<List<String>>() {
|
@Override
|
public void onAction(List<String> permissions) {
|
callBack.sucess();
|
}
|
})
|
.onDenied(new Action<List<String>>() {
|
@Override
|
public void onAction(@NonNull List<String> permissions) {
|
callBack.fail(permissions);
|
}
|
})
|
.start();
|
}
|
|
|
public static void gotoPermission(Context context) {
|
try {
|
String brand = Build.BRAND;//手机厂商
|
if (TextUtils.equals(brand.toLowerCase(), "redmi") || TextUtils.equals(brand.toLowerCase(), "xiaomi")) {
|
gotoMiuiPermission(context);//小米
|
} else if (TextUtils.equals(brand.toLowerCase(), "meizu")) {
|
gotoMeizuPermission(context);
|
} else if (TextUtils.equals(brand.toLowerCase(), "huawei") || TextUtils.equals(brand.toLowerCase(), "honor")) {
|
gotoHuaweiPermission(context);
|
} else {
|
context.startActivity(getAppDetailSettingIntent(context));
|
}
|
}catch (ActivityNotFoundException e){
|
Toast.makeText(context, context.getString(R.string.download_4), Toast.LENGTH_SHORT).show();
|
}
|
catch (Exception e){
|
|
}
|
}
|
|
|
/**
|
* 跳转到miui的权限管理页面
|
*/
|
private static void gotoMiuiPermission(Context context) {
|
try { // MIUI 8
|
Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
|
localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity");
|
localIntent.putExtra("extra_pkgname", context.getPackageName());
|
context.startActivity(localIntent);
|
} catch (Exception e) {
|
try { // MIUI 5/6/7
|
Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
|
localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
|
localIntent.putExtra("extra_pkgname", context.getPackageName());
|
context.startActivity(localIntent);
|
} catch (Exception e1) { // 否则跳转到应用详情
|
context.startActivity(getAppDetailSettingIntent(context));
|
}
|
}
|
}
|
|
/**
|
* 跳转到魅族的权限管理系统
|
*/
|
private static void gotoMeizuPermission(Context context) {
|
try {
|
Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
|
intent.addCategory(Intent.CATEGORY_DEFAULT);
|
intent.putExtra("packageName", BuildConfig.APPLICATION_ID);
|
context.startActivity(intent);
|
} catch (Exception e) {
|
e.printStackTrace();
|
context.startActivity(getAppDetailSettingIntent(context));
|
}
|
}
|
|
/**
|
* 华为的权限管理页面
|
*/
|
private static void gotoHuaweiPermission(Context context) {
|
try {
|
Intent intent = new Intent();
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.permissionmanager.ui.MainActivity");//华为权限管理
|
intent.setComponent(comp);
|
context.startActivity(intent);
|
} catch (Exception e) {
|
e.printStackTrace();
|
context.startActivity(getAppDetailSettingIntent(context));
|
}
|
|
}
|
|
/**
|
* 获取应用详情页面intent(如果找不到要跳转的界面,也可以先把用户引导到系统设置页面)
|
*/
|
private static Intent getAppDetailSettingIntent(Context context) {
|
Intent localIntent = new Intent();
|
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
|
localIntent.setData(Uri.fromParts("package", context.getPackageName(), null));
|
|
return localIntent;
|
}
|
}
|