在不设置 Device Owner 的情况下,快速验证 Kiosk 功能是否正确集成。
FLAG_KEEP_SCREEN_ON 实现,无需特殊权限KioskHelper.disableLockScreen()KioskManager.attach()查看日志确认功能是否执行:
adb logcat | grep -E "MyApplication|KioskHelper|KioskManager"
期望看到的日志:
D MyApplication: Application 初始化
D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry
D KioskHelper: ✅ 屏幕保持常亮
W KioskHelper: ⚠️ 不是 Device Owner,无法禁用锁屏
D KioskManager: ✅ LockTask 启用(一次)
以下功能必须设置为 Device Owner 才能生效:
dpm.setKeyguardDisabled(adminComponent, true); // ❌ 需要 Device Owner
dpm.setLockTaskPackages(admin, new String[]{packageName}); // ❌ 需要 Device Owner
activity.startLockTask(); // ❌ 需要 Device Owner
./gradlew assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apk
# 终端 1:查看日志
adb logcat -c && adb logcat | grep -E "MyApplication|KioskHelper|KioskManager"
# 终端 2:启动应用
adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry
查看日志中是否包含:
D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry
如果看到这条日志,说明自动初始化成功,无需在 JS 中调用。
# 清空日志缓存
adb logcat -c
# 使用更详细的过滤
adb logcat -v time | grep -i kiosk
# 查看崩溃日志
adb logcat -v time | grep -E "AndroidRuntime|FATAL"
常见原因:
BuildConfig 未正确导入解决方法:
// 在 MyApplication.java 中添加 import
import com.YuyeTech.HeartRate.BuildConfig;
检查 AndroidManifest.xml 中的 <application> 标签:
<application
android:name="com.YuyeTech.HeartRate.MyApplication" <!-- ✅ 应该是这个 -->
...>
如果是 io.dcloud.application.DCloudApplication,说明未正确修改。
| 功能 | 无 Device Owner | 有 Device Owner |
|---|---|---|
| 自动初始化 | ✅ 正常 | ✅ 正常 |
| 屏幕常亮 | ✅ 正常 | ✅ 正常 |
| 全屏沉浸 | ✅ 正常 | ✅ 正常 |
| 禁用锁屏 | ⚠️ 无效 | ✅ 正常 |
| 防止退出 | ⚠️ 无效 | ✅ 正常 |
| Home/Back 拦截 | ⚠️ 部分 | ✅ 完全 |
测试方法:
✅ 绑定 Kiosk 到: PandoraEntry判断标准:
AndroidManifest.xml 中的 Application 配置# 彩色高亮日志(Linux/Mac)
adb logcat | grep --color=always -E "MyApplication|KioskHelper|KioskManager|ERROR"
# PowerShell(Windows)
adb logcat | Select-String -Pattern "MyApplication|KioskHelper|KioskManager|ERROR"
# 清空日志 → 启动应用 → 等待 3 秒 → 保存日志
adb logcat -c && adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry && sleep 3 && adb logcat -d > app_start.log
adb logcat | grep -E "ActivityManager|MyApplication"
当你看到以下完整的日志序列时,说明集成成功:
01-22 16:30:00.123 D MyApplication: Application 初始化
01-22 16:30:00.234 D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry
01-22 16:30:00.345 D KioskHelper: ✅ 屏幕保持常亮
01-22 16:30:00.456 W KioskHelper: ⚠️ 不是 Device Owner,无法禁用锁屏
01-22 16:30:00.567 D KioskManager: ❌ 非 DeviceOwner,Kiosk 无效(只会提示一次)
或者(如果是 Device Owner):
01-22 16:30:00.123 D MyApplication: Application 初始化
01-22 16:30:00.234 D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry
01-22 16:30:00.345 D KioskHelper: ✅ 锁屏已禁用
01-22 16:30:00.456 D KioskHelper: ✅ 屏幕保持常亮
01-22 16:30:00.567 D KioskManager: ✅ LockTask 启用(一次)
下一步:如果快速测试通过,参考 KIOSK_SETUP_GUIDE.md 设置 Device Owner 以启用完整功能。