From d830fef6a2bc2ab061e6ac2b423c4a49dda3cf21 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期三, 06 十二月 2023 18:08:26 +0800
Subject: [PATCH] 2023年12月06日18:08:20

---
 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