From 589d1dff2ce8554ee53b818a98db000df7fdf4e7 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期二, 22 七月 2025 10:19:17 +0800
Subject: [PATCH] 2025年07月22日10:19:08
---
app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java | 126 ++++++++++++++++++++++++++++++++++-------
1 files changed, 103 insertions(+), 23 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 ff6a2d8..6def844 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
@@ -1,20 +1,25 @@
package com.hdl.photovoltaic.utils;
-import android.Manifest;
import android.app.Activity;
+import android.app.AppOpsManager;
+import android.app.NotificationManager;
import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
+import android.net.Uri;
import android.os.Build;
+import android.provider.Settings;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
-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.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -43,7 +48,7 @@
* @param activity -
* @param strings -
*/
- public static void askPermission(Activity activity, String[] strings) {
+ public static void activityPermission(Activity activity, String[] strings) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
List<String> newList = new ArrayList<>();
for (String permission : strings) {
@@ -71,10 +76,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) {
@@ -110,6 +127,7 @@
return STATUS_REFUSE_PERMANENT;
}
+
/**
* 鐢宠鏉冮檺鏈夊洖璋�
*
@@ -129,30 +147,36 @@
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);
- }
- }
+ 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_SUCCESS);
+ }
+ }
- @Override
- public void onDenied(List<String> permissions, boolean never) {
- if (is_skip) {
- SharedPreUtils.putBoolean(permission, true);
- }
- }
- });
+ @Override
+ public void onDenied(List<String> permissions, boolean never) {
+ if (permissionStateCallback != null) {
+ permissionStateCallback.Success(STATUS_REFUSE);
+ }
+ if (is_skip) {
+ SharedPreUtils.putBoolean(permission, true);
+ }
+ }
+ });
break;
case PermissionUtils.STATUS_REFUSE_PERMANENT:
// if (permissionStateCallback != null) {
// permissionStateCallback.Success(STATUS_REFUSE_PERMANENT);
// }
- HdlDialogLogic.getInstance().showSettingPermissionDialog(activity);
+ if (permissionStateCallback != null) {
+ permissionStateCallback.Success(STATUS_REFUSE_PERMANENT);
+ }
+ if (is_skip) {
+ HdlDialogLogic.getInstance().showSettingPermissionDialog(activity);
+ }
break;
}
}
@@ -163,4 +187,60 @@
}
+ // 妫�鏌ラ�氱煡鏉冮檺鐘舵��
+ public static boolean isNotificationEnabled(Context mContext) {
+ if (mContext == null) {
+ return false;
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ // Android 8.0 鍙婁互涓婄増鏈�
+ NotificationManager notificationManager =
+ (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ return notificationManager.areNotificationsEnabled();
+ } else {
+ // Android 7.1 鍙婁互涓嬬増鏈�
+ AppOpsManager appOps = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
+ ApplicationInfo appInfo = mContext.getApplicationInfo();
+ String packageName = mContext.getApplicationContext().getPackageName();
+ int uid = appInfo.uid;
+ try {
+ Class<?> appOpsClass = Class.forName(AppOpsManager.class.getName());
+ Method checkOpNoThrowMethod = appOpsClass.getMethod("checkOpNoThrow", Integer.TYPE,
+ Integer.TYPE, String.class);
+ Field opPostNotificationValue = appOpsClass.getDeclaredField("OP_POST_NOTIFICATION");
+ int value = (int) opPostNotificationValue.get(Integer.class);
+ return ((int) checkOpNoThrowMethod.invoke(appOps, value, uid, packageName)
+ == AppOpsManager.MODE_ALLOWED);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return true;
+ }
+ }
+ }
+
+ // 鎵撳紑閫氱煡鏉冮檺璁剧疆椤甸潰
+ public static void openNotificationSettings(Context mContext) {
+ if (mContext == null) {
+ return;
+ }
+ Intent intent = new Intent();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ // Android 8.0 鍙婁互涓婄増鏈�
+ intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
+ intent.putExtra(Settings.EXTRA_APP_PACKAGE, mContext.getPackageName());
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ // Android 5.0 鍙婁互涓婄増鏈�
+ intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
+ intent.putExtra("app_package", mContext.getPackageName());
+ intent.putExtra("app_uid", mContext.getApplicationInfo().uid);
+ } else {
+ // Android 5.0 浠ヤ笅鐗堟湰
+ intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ intent.setData(Uri.parse("package:" + mContext.getPackageName()));
+ }
+ mContext.startActivity(intent);
+ }
+
+
}
--
Gitblit v1.8.0