| | |
| | | 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才可以申请 |
| | |
| | | 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); |
| | | |
| | | } |
| | | |
| | | |
| | | } |