From 637e3152e3bfea430ca774c7dd178b4b9696c37f Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期二, 26 十二月 2023 17:11:58 +0800
Subject: [PATCH] 2023年12月26日17:11:48
---
app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java | 93 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 89 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..8237d46 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,41 @@
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.HdlDialogLogic;
+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 +91,73 @@
return new String[]{};
}
+ /**
+ * 鑾峰彇鏉冮檺鐘舵��
+ */
+ public static int getPermissionState(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 requestPermissionsResultCallback(Activity activity, String permission, PermissionState permissionStateCallback) {
+// String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
+ int status = PermissionUtils.getPermissionState(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);
+// }
+ HdlDialogLogic.getInstance().showSettingPermissionDialog(activity);
+ break;
+ }
+ }
+
+ public interface PermissionState {
+ void Success(int value);
+
+ }
+
}
--
Gitblit v1.8.0