本项目是一个 UniApp 离线 Android 应用,集成了完整的 Kiosk 模式功能,包括:
| 组件 | 说明 | 位置 |
|---|---|---|
MyApplication.java |
应用入口,注册生命周期监听 | app/src/main/java/.../MyApplication.java |
KioskHelper.java |
禁用锁屏和保持屏幕常亮 | app/src/main/java/.../KioskHelper.java |
KioskManager.java |
管理 LockTask 和系统 UI | myLockView/src/.../KioskManager.java |
KioskDeviceAdminReceiver.java |
Device Admin 接收器 | myLockView/src/.../KioskDeviceAdminReceiver.java |
D MyApplication: Application 初始化
D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntryActivity
D KioskHelper: ✅ 锁屏已禁用
D KioskHelper: ✅ 屏幕保持常亮
D KioskManager: ✅ LockTask 启用(一次)
| 组件 | 说明 | 位置 |
|---|---|---|
BackPressHandler.java |
返回键处理器 | app/src/main/java/.../BackPressHandler.java |
| 场景 | 行为 | Toast 提示 |
|---|---|---|
| 主页面按返回键 | ⛔ 禁用 | "Kiosk 模式已锁定" |
| 启动页按返回键 | ⛔ 禁用 | "Kiosk 模式已锁定" |
| WiFi 设置按返回键 | ✅ 允许 | 无 |
D BackPressHandler: 🔙 检测到返回键按下
D BackPressHandler: ⛔ PandoraEntryActivity 按返回键 → 已禁用(Kiosk 模式)
| 组件 | 说明 | 位置 |
|---|---|---|
WifiCheckHelper.java |
WiFi 检测和提示 | app/src/main/java/.../WifiCheckHelper.java |
应用启动
↓
延迟 2 秒
↓
检测 WiFi 连接
↓
未连接 → 显示对话框(不可取消)
↓
用户点击"去设置"
↓
跳转到 WiFi 设置
↓
用户按返回键
↓
延迟 1 秒
↓
重新检测 WiFi
↓
仍未连接 → 再次显示对话框(循环)
已连接 → 检测通过 ✅
D WifiCheckHelper: WiFi 连接状态: false
D WifiCheckHelper: ⚠️ WiFi 未连接,显示提示对话框(必须连接)
D WifiCheckHelper: 用户选择:去设置
D WifiCheckHelper: ⚠️ onResume 时 WiFi 未连接
D WifiCheckHelper: ⚠️ WiFi 仍未连接,显示提示对话框
| 组件 | 说明 | 位置 |
|---|---|---|
BootReceiver.java |
开机广播接收器 | myLockView/src/.../BootReceiver.java |
D BootReceiver: 📱 收到开机广播: android.intent.action.BOOT_COMPLETED
D BootReceiver: ✅ 正在启动 Kiosk 应用...
D BootReceiver: ✅ Kiosk 应用已启动
bBeng-HeartRate-4.66-pad/
├── app/src/main/java/com/YuyeTech/HeartRate/
│ ├── MyApplication.java # ✅ 应用入口,生命周期管理
│ ├── KioskHelper.java # ✅ 禁用锁屏和保持屏幕常亮
│ ├── BackPressHandler.java # ✅ 返回键处理器
│ └── WifiCheckHelper.java # ✅ WiFi 检测和提示
├── myLockView/src/main/java/com/ble/mylockview/
│ ├── admin/
│ │ ├── KioskManager.java # ✅ Kiosk 管理器
│ │ └── KioskDeviceAdminReceiver.java # ✅ Device Admin 接收器
│ ├── boot/
│ │ └── BootReceiver.java # ✅ 开机启动接收器
│ └── config/
│ └── LaunchConfig.java # ✅ 启动配置
├── myWIFIView/src/main/java/com/ble/mywifiview/
│ └── WifiModule.java # ✅ WiFi 工具类
├── 测试返回键功能.bat # 测试脚本
├── 测试WiFi检测功能.bat # 测试脚本
├── 安装并配置Kiosk模式.bat # 安装脚本
├── 返回键功能说明.md # 文档
├── WiFi检测功能说明.md # 文档
└── Kiosk模式完整功能说明.md # 本文档
.\gradlew assembleApp_bbengDebug
.\安装并配置Kiosk模式.bat
这个脚本会自动:
.\测试返回键功能.bat
.\测试WiFi检测功能.bat
D MyApplication: Application 初始化
D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry
D KioskHelper: ✅ 锁屏已禁用
D KioskHelper: ✅ 屏幕保持常亮
D KioskManager: ✅ LockTask 启用(一次)
D MyApplication: ✅ 返回键拦截器已安装: PandoraEntry
D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntryActivity
D KioskHelper: ✅ 锁屏已禁用
D KioskHelper: ✅ 屏幕保持常亮
D KioskManager: ✅ LockTask 启用(一次)
D MyApplication: ✅ 返回键拦截器已安装: PandoraEntryActivity
D WifiCheckHelper: 🔍 开始检测 WiFi 连接...
D WifiCheckHelper: 是否跳过 WiFi 检测: false
D WifiCheckHelper: WiFi 连接状态: false
D WifiCheckHelper: ⚠️ WiFi 未连接,显示提示对话框(必须连接)
D WifiCheckHelper: ✅ WiFi 未连接对话框已显示(必须连接)
D WifiCheckHelper: 用户选择:去设置
D BackPressHandler: 🔙 检测到返回键按下
D BackPressHandler: ⛔ PandoraEntryActivity 按返回键 → 已禁用(Kiosk 模式)
D WifiCheckHelper: ⚠️ onResume 时 WiFi 未连接
D WifiCheckHelper: ⚠️ WiFi 仍未连接,显示提示对话框
D BackPressHandler: 🔙 检测到返回键按下
D BackPressHandler: ✅ 系统设置页面 按返回键 → 允许返回
D BootReceiver: 📱 收到开机广播: android.intent.action.BOOT_COMPLETED
D BootReceiver: 📱 启动 Activity: io.dcloud.PandoraEntry
D BootReceiver: ✅ 正在启动 Kiosk 应用...
D BootReceiver: ✅ Kiosk 应用已启动
在 MyApplication.java 中注释掉:
// WifiCheckHelper.checkWifiOnActivityStart(activity);
// WifiCheckHelper.checkWifiOnActivityResume(activity);
在 BackPressHandler.java 中:
showToast(activity, "Kiosk 模式已锁定"); // ← 修改文本
在 MyApplication.java 中注释掉:
// interceptBackPress(activity);
原因:返回键未被正确拦截
解决方案:
BackPressHandler 返回 true原因:setCancelable(true) 被误设置
解决方案:
在 WifiCheckHelper.java 中确认:
.setCancelable(false) // ← 必须是 false
原因:系统设置页面判断失败
解决方案:
查看日志中的 Activity 类名,修改 isSettingsActivity() 方法
原因:系统厂商限制
解决方案:
设置开机自启动权限.bat| 文档 | 说明 |
|---|---|
返回键功能说明.md |
返回键禁用功能详细说明 |
WiFi检测功能说明.md |
WiFi 检测功能详细说明 |
README_BAT脚本使用说明.md |
所有 BAT 脚本使用指南 |
Kiosk模式完整功能说明.md |
本文档(总览) |
Device Owner 模式
adb shell dpm set-device-owner 命令测试流程
安装并配置Kiosk模式.bat日志调试
adb logcat -s TAG:D 过滤日志MyApplication, KioskHelper, KioskManager, BackPressHandler, WifiCheckHelper, BootReceiver发布前检查
✅ 完整的 Kiosk 模式解决方案:
✅ 完美解决黑屏问题:
✅ 用户体验优化: