From c6e503f9c7b46d9df78242222949dd7cb200cdc2 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期四, 30 十一月 2023 14:45:45 +0800 Subject: [PATCH] 2023年11月30日14:45:39 --- app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java | 92 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 88 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java index c970410..91a31dc 100644 --- a/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java +++ b/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java @@ -1,24 +1,40 @@ package com.hdl.photovoltaic.utils; +import android.Manifest; import android.app.Activity; +import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; + +import com.hdl.photovoltaic.R; +import com.hdl.photovoltaic.other.HdlThreadLogic; +import com.hjq.permissions.OnPermissionCallback; +import com.hjq.permissions.XXPermissions; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class PermissionUtils { - /** * 鑾峰彇鏉冮檺鎴愬姛 */ - public static final int STATUS_SUCCESS = 1; + public static final int STATUS_SUCCESS = 0; + /** + * 鐢宠鏉冮檺鎷掔粷, 浣嗘槸涓嬫鐢宠鏉冮檺杩樹細寮圭獥 + */ + public static final int STATUS_REFUSE = 1; + /** + * 鐢宠鏉冮檺鎷掔粷锛屽苟涓旀槸姘镐箙锛屼笉浼氬啀寮圭獥 + */ + public static final int STATUS_REFUSE_PERMANENT = 2; + /** + * 榛樿鏈姹傛巿鏉冪姸鎬� + */ + public static final int STATUS_DEFAULT = 3; /** * 鍙湁activity鎵嶅彲浠ョ敵璇� @@ -74,5 +90,73 @@ return new String[]{}; } + /** + * 鑾峰彇鏉冮檺鐘舵�� + */ + public static int getAuthorizeStaus(Activity activity, String authorize) { + int flag = ActivityCompat.checkSelfPermission(activity, authorize); + Boolean isShould = ActivityCompat.shouldShowRequestPermissionRationale(activity, authorize); + if (isShould) { + return STATUS_REFUSE; + } + if (flag == PackageManager.PERMISSION_GRANTED) { + //鑾峰彇鍒版潈闄� + return STATUS_SUCCESS; + } + if (!SharedPreUtils.contains(authorize)) { + return STATUS_DEFAULT; + } + return STATUS_REFUSE_PERMANENT; + } + + /** + * 鐢宠鏉冮檺鏈夊洖璋� + * + * @param activity - + * @param permission - + * @param permissionStateCallback - + */ + public static void applyForRight(Activity activity, String permission, PermissionState permissionStateCallback) { +// String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE; + int status = PermissionUtils.getAuthorizeStaus(activity, permission); + switch (status) { + case PermissionUtils.STATUS_SUCCESS: + if (permissionStateCallback != null) { + permissionStateCallback.Success(STATUS_SUCCESS); + } + break; + case PermissionUtils.STATUS_REFUSE: + case PermissionUtils.STATUS_DEFAULT: + XXPermissions.with(activity) + .permission(permission) + .request(new OnPermissionCallback() { + @Override + public void onGranted(List<String> permissions, boolean all) { + SharedPreUtils.putBoolean(permission, true); + if (permissionStateCallback != null) { + permissionStateCallback.Success(STATUS_REFUSE); + } + } + + @Override + public void onDenied(List<String> permissions, boolean never) { + SharedPreUtils.putBoolean(permission, true); + } + }); + break; + case PermissionUtils.STATUS_REFUSE_PERMANENT: + if (permissionStateCallback != null) { + permissionStateCallback.Success(STATUS_REFUSE_PERMANENT); + } + + break; + } + } + + public interface PermissionState { + void Success(int value); + + } + } -- Gitblit v1.8.0