From d81b425672a8b9c95f46f5712c3e001f97f4b8cb Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Tue, 10 Feb 2026 10:03:59 +0800
Subject: [PATCH] feat: 后台弹出界面
---
uniapps/work-app/src/uni_modules/lgh-dialog/utssdk/app-android/index.uts | 116 ++++++++++++++++++++++++++++-----------------------------
1 files changed, 57 insertions(+), 59 deletions(-)
diff --git a/uniapps/work-app/src/uni_modules/lgh-dialog/utssdk/app-android/index.uts b/uniapps/work-app/src/uni_modules/lgh-dialog/utssdk/app-android/index.uts
index dec2de6..f1af48a 100644
--- a/uniapps/work-app/src/uni_modules/lgh-dialog/utssdk/app-android/index.uts
+++ b/uniapps/work-app/src/uni_modules/lgh-dialog/utssdk/app-android/index.uts
@@ -1,67 +1,65 @@
-import Build from "android.os.Build";
-import Context from "android.content.Context";
-import WindowManager from "android.view.WindowManager";
-import TextView from "android.widget.TextView";
-import Gravity from "android.view.Gravity";
-import Color from "android.graphics.Color";
-import PixelFormat from "android.graphics.PixelFormat";
-import Settings from "android.provider.Settings";
-import { UTSAndroid } from "io.dcloud.uts";
+import Build from 'android.os.Build'
+import Context from 'android.content.Context'
+import Intent from 'android.content.Intent'
+import Settings from 'android.provider.Settings'
+import { UTSAndroid } from 'io.dcloud.uts'
+import BatteryManager from "android.os.BatteryManager";
-let dialogView: TextView | null = null;
-
+// 拉起应用
export function openDialog(): void {
- const context = UTSAndroid.getAppContext();
- if (context == null || dialogView != null) return;
+ const context = UTSAndroid.getAppContext()
+ if (context == null) return
+ try {
+ const pm = context.getPackageManager()
+ const intent = pm.getLaunchIntentForPackage(context.getPackageName())
+ if (intent != null) {
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ context.startActivity(intent)
+ }
+ } catch (e) {
+ console.error(e)
+ }
+}
+// 跳到允许悬浮窗权限页面
+export function allowFloat() {
+ const context = UTSAndroid.getAppContext()
+ if (context == null) return
+ // 1. 检查悬浮窗权限 (Android 6.0+)
if (Build.VERSION.SDK_INT >= 23 && !Settings.canDrawOverlays(context)) {
- console.error("无悬浮窗权限");
- return;
- }
-
- const wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager;
- if (wm == null) return;
-
- dialogView = new TextView(context);
- dialogView!.setText("系统接听页面");
- dialogView!.setTextColor(Color.WHITE);
- dialogView!.setTextSize(22.0.toFloat());
- dialogView!.setGravity(Gravity.CENTER);
- dialogView!.setBackgroundColor(Color.parseColor("#CC000000"));
-
- const type = Build.VERSION.SDK_INT >= 26 ? WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY : WindowManager.LayoutParams.TYPE_PHONE;
- const flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
- WindowManager.LayoutParams.FLAG_FULLSCREEN |
- WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
- WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
- WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
-
- const params = new WindowManager.LayoutParams(
- WindowManager.LayoutParams.MATCH_PARENT,
- WindowManager.LayoutParams.MATCH_PARENT,
- type,
- flags,
- PixelFormat.TRANSLUCENT
- );
-
- try {
- wm.addView(dialogView, params);
- } catch (e) {
- console.error(e);
- dialogView = null;
+ try {
+ // 无权限,跳转到权限设置页面
+ const intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)
+ intent.setData(android.net.Uri.parse('package:' + context.getPackageName()))
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ context.startActivity(intent)
+ } catch (e) {
+ console.error(e)
+ }
+ return
}
}
-export function closeDialog(): void {
- if (dialogView == null) return;
- try {
- const context = UTSAndroid.getAppContext();
- if (context == null) return;
- const wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager;
- wm.removeView(dialogView);
- } catch (e) {
- console.error(e);
- } finally {
- dialogView = null;
- }
+/**
+ * 获取电池电量百分比
+ *
+ * uni-app项目中调用示例:
+ * import { getBatteryCapacity } from "@/uni_modules/lgh-getbatteryinfo"
+ * const capacity = getBatteryCapacity()
+ * console.log('电池电量:', capacity)
+ */
+export function getBatteryCapacity(): string {
+ // 获取android系统 application上下文
+ const context = UTSAndroid.getAppContext();
+ if (context != null) {
+ const manager = context.getSystemService(
+ Context.BATTERY_SERVICE
+ ) as BatteryManager;
+ const currentLevel: number = manager.getIntProperty(
+ BatteryManager.BATTERY_PROPERTY_CAPACITY
+ );
+ return '' + currentLevel + '%';
+ }
+ return "0%";
}
+
--
Gitblit v1.9.3