Kiosk模式完整功能说明.md 11 KB

🔐 Kiosk 模式完整功能说明

📋 总览

本项目是一个 UniApp 离线 Android 应用,集成了完整的 Kiosk 模式功能,包括:

  • 自动禁用锁屏(Device Owner 模式)
  • 屏幕保持常亮
  • LockTask 固定屏幕(防止切换应用)
  • 禁用返回键(防止退出应用)
  • WiFi 强制检测(启动时和从设置返回时)
  • 开机自启动(BootReceiver)

🎯 功能特性

1. Kiosk 锁定模式 ✅

自动初始化

  • 应用启动时自动启用 Kiosk 模式
  • 禁用锁屏,防止设备进入锁屏状态
  • 屏幕保持常亮,永不休眠
  • 启用 LockTask,防止用户切换到其他应用

核心组件

组件 说明 位置
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 启用(一次)

2. 返回键禁用 ✅

功能说明

  • 完全禁用应用内的返回键
  • 防止用户返回到黑屏启动页
  • 防止显示"无法取消固定屏幕"提示
  • 只允许从 WiFi 设置页面返回

核心组件

组件 说明 位置
BackPressHandler.java 返回键处理器 app/src/main/java/.../BackPressHandler.java

行为策略

场景 行为 Toast 提示
主页面按返回键 ⛔ 禁用 "Kiosk 模式已锁定"
启动页按返回键 ⛔ 禁用 "Kiosk 模式已锁定"
WiFi 设置按返回键 ✅ 允许

日志输出

D BackPressHandler: 🔙 检测到返回键按下
D BackPressHandler: ⛔ PandoraEntryActivity 按返回键 → 已禁用(Kiosk 模式)

3. WiFi 强制检测 ✅

功能说明

  • 应用启动时检测 WiFi 连接状态
  • 未连接时弹出不可取消的对话框
  • 用户必须连接 WiFi 或选择"不再提示"
  • 从 WiFi 设置返回后自动重新检测

核心组件

组件 说明 位置
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 仍未连接,显示提示对话框

4. 开机自启动 ✅

功能说明

  • 设备开机后自动启动应用
  • 自动进入 Kiosk 模式
  • 支持直接启动(Direct Boot)

核心组件

组件 说明 位置
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        # 本文档

🚀 快速开始

1. 编译应用

.\gradlew assembleApp_bbengDebug

2. 安装并配置

.\安装并配置Kiosk模式.bat

这个脚本会自动:

  • ✅ 安装 APK
  • ✅ 设置为 Device Owner
  • ✅ 配置 LockTask 白名单
  • ✅ 启动应用

3. 测试功能

测试返回键

.\测试返回键功能.bat

测试 WiFi 检测

.\测试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 连接...

WiFi 检测日志(未连接)

D WifiCheckHelper: 是否跳过 WiFi 检测: false
D WifiCheckHelper: WiFi 连接状态: false
D WifiCheckHelper: ⚠️ WiFi 未连接,显示提示对话框(必须连接)
D WifiCheckHelper: ✅ WiFi 未连接对话框已显示(必须连接)
D WifiCheckHelper: 用户选择:去设置

返回键拦截日志

D BackPressHandler: 🔙 检测到返回键按下
D BackPressHandler: ⛔ PandoraEntryActivity 按返回键 → 已禁用(Kiosk 模式)

从 WiFi 设置返回日志

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 应用已启动

🧪 测试清单

✅ Kiosk 锁定功能

  • 应用启动后,屏幕保持常亮
  • 无法下拉通知栏
  • 无法切换到其他应用
  • 锁屏键被禁用

✅ 返回键禁用

  • 在主页面按返回键,显示 "Kiosk 模式已锁定"
  • 在启动页按返回键,显示 "Kiosk 模式已锁定"
  • 不出现黑屏页面
  • 不显示"无法取消固定屏幕"

✅ WiFi 检测

  • 启动时检测 WiFi,未连接则弹出对话框
  • 对话框不可取消(点击外部无效)
  • 点击"去设置"可以跳转到 WiFi 设置
  • 从 WiFi 设置返回后自动重新检测
  • 仍未连接则继续弹出对话框

✅ 开机自启动

  • 设备重启后应用自动启动
  • 自动进入 Kiosk 模式

⚙️ 配置选项

禁用 WiFi 检测

MyApplication.java 中注释掉:

// WifiCheckHelper.checkWifiOnActivityStart(activity);
// WifiCheckHelper.checkWifiOnActivityResume(activity);

修改 Toast 提示文本

BackPressHandler.java 中:

showToast(activity, "Kiosk 模式已锁定");  // ← 修改文本

允许退出应用(测试用)

MyApplication.java 中注释掉:

// interceptBackPress(activity);

🐛 故障排查

问题 1:显示"无法取消固定屏幕"

原因:返回键未被正确拦截

解决方案

  1. 查看日志,确认看到 "已禁用(Kiosk 模式)"
  2. 确认 BackPressHandler 返回 true
  3. 重新安装应用

问题 2:WiFi 对话框可以取消

原因setCancelable(true) 被误设置

解决方案: 在 WifiCheckHelper.java 中确认:

.setCancelable(false)  // ← 必须是 false

问题 3:从 WiFi 设置无法返回

原因:系统设置页面判断失败

解决方案: 查看日志中的 Activity 类名,修改 isSettingsActivity() 方法

问题 4:开机不自启动

原因:系统厂商限制

解决方案

  1. 运行 设置开机自启动权限.bat
  2. 手动在设备上设置:
    • 自启动管理:允许
    • 电池优化:不优化
    • 后台运行:允许

📚 相关文档

文档 说明
返回键功能说明.md 返回键禁用功能详细说明
WiFi检测功能说明.md WiFi 检测功能详细说明
README_BAT脚本使用说明.md 所有 BAT 脚本使用指南
Kiosk模式完整功能说明.md 本文档(总览)

💡 最佳实践

  1. Device Owner 模式

    • 必须在设备恢复出厂设置后设置
    • 使用 adb shell dpm set-device-owner 命令
    • 确保设备上没有其他账号
  2. 测试流程

    • 先恢复出厂设置
    • 运行 安装并配置Kiosk模式.bat
    • 运行测试脚本验证功能
  3. 日志调试

    • 使用 adb logcat -s TAG:D 过滤日志
    • 关键 TAG:MyApplication, KioskHelper, KioskManager, BackPressHandler, WifiCheckHelper, BootReceiver
  4. 发布前检查

    • ✅ 禁用所有调试日志
    • ✅ 移除测试代码
    • ✅ 验证所有功能正常
    • ✅ 测试开机自启动

🎯 总结

完整的 Kiosk 模式解决方案

  • 自动禁用锁屏和保持屏幕常亮
  • LockTask 固定屏幕,防止切换应用
  • 完全禁用返回键,防止退出应用
  • WiFi 强制检测,确保网络连接
  • 开机自启动,无需人工干预

完美解决黑屏问题

  • 不会返回到黑屏启动页
  • 不显示"无法取消固定屏幕"
  • 只允许从 WiFi 设置返回

用户体验优化

  • Toast 提示清晰明了
  • WiFi 设置返回流畅
  • Kiosk 模式稳定可靠