mac
2023-12-05 b2d2e6dcf6ec38a2f24721f2bc925d634a6eb78d
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);
    }
}