From b2340ac4ce1c9ea2070c0e7fb72a03fb2b2500ad Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期四, 19 三月 2026 15:27:32 +0800
Subject: [PATCH] 2026年03月19日15:27:21 蓝牙开发中
---
app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java | 70 ++++++++++++++++++++++++++++++++++-
1 files changed, 68 insertions(+), 2 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 2aa33c7..d71c332 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
@@ -1,7 +1,9 @@
package com.hdl.photovoltaic.utils;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.AppOpsManager;
+import android.app.Application;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
@@ -14,6 +16,7 @@
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
+import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.other.HdlDialogLogic;
import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.XXPermissions;
@@ -76,10 +79,22 @@
}
/**
+ * 妫�鏌ヤ竴涓潈闄�
+ *
+ * @param context -
+ * @param permission -
+ * @return -
+ */
+ public static boolean checkPermission(Context context, String permission) {
+ //first we need check this Drive has? CAMERA Permission
+ return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
+ }
+
+ /**
* 妫�鏌ュ涓潈闄�
*
* @param activity -
- * @param strings -
+ * @param strings -鏉冮檺鐨勬暟鎹�
* @return -
*/
public static String[] checkPermission(Activity activity, String[] strings) {
@@ -101,6 +116,14 @@
*/
public static int getPermissionState(Activity activity, String authorize) {
int flag = ActivityCompat.checkSelfPermission(activity, authorize);
+ //姝ゆ椂闇�瑕佸垽鏂槸鍚︽槸"姘镐箙鎷掔粷"
+ //褰撳墠isShould =false锛�
+ // 姘镐箙鎷掔粷锛堢敤鎴峰嬀閫変簡"涓嶅啀璇㈤棶"锛�
+ // 鎴栬�呮槸鍦ㄦ煇浜涚壒娈婂満鏅笅锛堝璁惧绛栫暐闄愬埗锛�
+ // 杩欑鎯呭喌鍐嶆 requestPermissions() 涔熶笉浼氬脊绐楋紝蹇呴』寮曞鐢ㄦ埛鍘昏缃〉闈㈡墜鍔ㄥ紑鍚�
+ //褰撳墠isShould =true锛�
+ // 鏅�氭嫆缁濓紙鐢ㄦ埛鍙槸鐐逛簡鎷掔粷锛屾病鏈夊嬀閫�"涓嶅啀璇㈤棶"锛�
+ // 杩欑鎯呭喌鍐嶆 requestPermissions() 杩樹細寮圭獥
boolean isShould = ActivityCompat.shouldShowRequestPermissionRationale(activity, authorize);
if (isShould) {
return STATUS_REFUSE;
@@ -114,6 +137,43 @@
}
return STATUS_REFUSE_PERMANENT;
}
+
+ /**
+ * 鑾峰彇鏉冮檺鐘舵��( 鏉冮檺妫�鏌ョ粨鏋滃姣�)
+ *
+ * @param activity 娲诲姩
+ * @param authorize 鏉冮檺鍚嶇О
+ * @return 锛�0=鎺堜簣鏉冮檺锛�1=鏅�氭嫆缁濓紙鐢ㄦ埛鍙槸鐐逛簡鎷掔粷锛屾病鏈夊嬀閫�"涓嶅啀璇㈤棶"锛夛紱2=姘镐箙鎷掔粷锛堢敤鎴峰嬀閫変簡"涓嶅啀璇㈤棶"锛夛紱3=棣栨鐢宠锛�
+ */
+ public static int getPermissionStateV2(Activity activity, String authorize) {
+ int flag = ActivityCompat.checkSelfPermission(activity, authorize);
+ // 鎯呭喌 1: 鐢ㄦ埛鎺堜簣鏉冮檺
+ if (flag == PackageManager.PERMISSION_GRANTED) {
+ //鑾峰彇鍒版潈闄�
+ return STATUS_SUCCESS;
+ }
+ if (!SharedPreUtils.contains(authorize)) {
+ SharedPreUtils.putBoolean(authorize, true);
+ //棣栨鐢宠
+ return STATUS_DEFAULT;
+ }
+ // 鎯呭喌 2: 鐢ㄦ埛鎷掔粷鏉冮檺锛堝寘鎷娆℃嫆缁濄�佹案涔呮嫆缁濓級
+ if (flag == PackageManager.PERMISSION_DENIED) {
+ boolean isShould = ActivityCompat.shouldShowRequestPermissionRationale(activity, authorize);
+ if (isShould) {
+ // 鏅�氭嫆缁濓紙鐢ㄦ埛鍙槸鐐逛簡鎷掔粷锛屾病鏈夊嬀閫�"涓嶅啀璇㈤棶"锛�
+ // 杩欑鎯呭喌鍐嶆 requestPermissions() 杩樹細寮圭獥
+ return STATUS_REFUSE;
+ } else {
+ // 姘镐箙鎷掔粷锛堢敤鎴峰嬀閫変簡"涓嶅啀璇㈤棶"锛夛紱銆愭敞鎰忥細鏈変簺鎵嬫満娌℃湁鈥滀笉鍐嶈闂�濋�夐」锛岀偣鍑讳袱娆′互涓婃嫆缁濓紝灏变細鍙樻垚姘镐箙鎷掔粷銆�
+ // 鎴栬�呮槸鍦ㄦ煇浜涚壒娈婂満鏅笅锛堝璁惧绛栫暐闄愬埗锛�
+ // 杩欑鎯呭喌鍐嶆 requestPermissions() 涔熶笉浼氬脊绐楋紝蹇呴』寮曞鐢ㄦ埛鍘昏缃〉闈㈡墜鍔ㄥ紑鍚�
+ return STATUS_REFUSE_PERMANENT;
+ }
+ }
+ return STATUS_REFUSE;
+ }
+
/**
* 鐢宠鏉冮檺鏈夊洖璋�
@@ -139,12 +199,15 @@
public void onGranted(List<String> permissions, boolean all) {
SharedPreUtils.putBoolean(permission, true);
if (permissionStateCallback != null) {
- permissionStateCallback.Success(STATUS_REFUSE);
+ permissionStateCallback.Success(STATUS_SUCCESS);
}
}
@Override
public void onDenied(List<String> permissions, boolean never) {
+ if (permissionStateCallback != null) {
+ permissionStateCallback.Success(STATUS_REFUSE);
+ }
if (is_skip) {
SharedPreUtils.putBoolean(permission, true);
}
@@ -155,6 +218,9 @@
// if (permissionStateCallback != null) {
// permissionStateCallback.Success(STATUS_REFUSE_PERMANENT);
// }
+ if (permissionStateCallback != null) {
+ permissionStateCallback.Success(STATUS_REFUSE_PERMANENT);
+ }
if (is_skip) {
HdlDialogLogic.getInstance().showSettingPermissionDialog(activity);
}
--
Gitblit v1.8.0