From e00da17ae2adaecf1cdf2d5128e357a50607bc90 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Fri, 27 Feb 2026 08:40:37 +0800
Subject: [PATCH] feat: 权限获取调整

---
 uniapps/work-app/src/uni_modules/keep-app/utssdk/app-android/index.uts |   65 ++++++++++++++++++--------------
 1 files changed, 36 insertions(+), 29 deletions(-)

diff --git a/uniapps/work-app/src/uni_modules/keep-app/utssdk/app-android/index.uts b/uniapps/work-app/src/uni_modules/keep-app/utssdk/app-android/index.uts
index 2ce95f2..ec5a53b 100644
--- a/uniapps/work-app/src/uni_modules/keep-app/utssdk/app-android/index.uts
+++ b/uniapps/work-app/src/uni_modules/keep-app/utssdk/app-android/index.uts
@@ -11,6 +11,8 @@
 import PowerManager from 'android.os.PowerManager'
 import BatteryManager from 'android.os.BatteryManager'
 import { UTSAndroid } from 'io.dcloud.uts'
+import AlertDialog from 'android.app.AlertDialog'
+import DialogInterface from 'android.content.DialogInterface'
 
 // 保活服务的通知渠道ID
 const CHANNEL_ID = 'keep_alive_channel'
@@ -102,36 +104,7 @@
   return '0%'
 }
 
-/**
- * 请求忽略电池优化(需要用户手动确认)
- * 调用此方法会弹出系统设置页面
- */
-export function requestIgnoreBatteryOptimization(): void {
-  const context = UTSAndroid.getAppContext()
-  if (context == null) {
-    return
-  }
 
-  if (Build.VERSION.SDK_INT >= 23) {
-    // Android 6.0+
-    const powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
-    const packageName = context.getPackageName()
-
-    if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
-      try {
-        const intent = new Intent()
-        intent.setAction('android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS')
-        intent.setData(android.net.Uri.parse('package:' + packageName))
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-        context.startActivity(intent)
-      } catch (e) {
-        console.error('requestIgnoreBatteryOptimization: 打开设置失败', e)
-      }
-    } else {
-      console.log('requestIgnoreBatteryOptimization: 已在白名单中')
-    }
-  }
-}
 
 /**
  * 检查是否已忽略电池优化
@@ -152,6 +125,40 @@
 }
 
 /**
+ * 请求忽略电池优化(需要用户手动确认)
+ * 调用此方法会弹出系统设置页面
+ */
+export function requestIgnoreBatteryOptimization(): void {
+  if (isIgnoringBatteryOptimizations()) return
+  const activity = UTSAndroid.getUniActivity()
+  if (activity == null) return
+  AlertDialog.Builder(activity)
+    .setTitle('权限提示')
+    .setMessage('为了在后台收到来电时能弹出通话界面,请将应用添加到电池优化白名单')
+    .setPositiveButton('去设置', (_dialog : DialogInterface, _which : Int) => {
+      const context = UTSAndroid.getAppContext()
+      if (context == null) return
+      if (Build.VERSION.SDK_INT >= 23) {
+        const powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
+        const packageName = context.getPackageName()
+        if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
+          try {
+            const intent = new Intent()
+            intent.setAction('android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS')
+            intent.setData(android.net.Uri.parse('package:' + packageName))
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+          } catch (e) {
+            console.error('requestIgnoreBatteryOptimization: 打开设置失败', e)
+          }
+        }
+      }
+    })
+    .setNegativeButton('暂不', null)
+    .show()
+}
+
+/**
  * 创建通知渠道 (Android 8.0+ 必需)
  */
 function createNotificationChannel(context: Context): void {

--
Gitblit v1.9.3