# 快速测试指南(无需 Device Owner) ## 🎯 目的 在不设置 Device Owner 的情况下,快速验证 Kiosk 功能是否正确集成。 ## ✅ 可测试的功能(无需 Device Owner) ### 1. 屏幕常亮 - ✅ 应用运行时屏幕不会自动熄灭 - ✅ 使用 `FLAG_KEEP_SCREEN_ON` 实现,无需特殊权限 ### 2. 全屏沉浸式 - ✅ 状态栏和导航栏自动隐藏 - ✅ 用户下拉时会自动重新隐藏 ### 3. 自动初始化 - ✅ 应用启动时自动调用 `KioskHelper.disableLockScreen()` - ✅ 应用启动时自动调用 `KioskManager.attach()` - ✅ 无需在 JS 中手动调用 ### 4. 日志验证 查看日志确认功能是否执行: ```bash 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 的功能 以下功能**必须设置为 Device Owner** 才能生效: ### 1. 完全禁用锁屏 ```java dpm.setKeyguardDisabled(adminComponent, true); // ❌ 需要 Device Owner ``` ### 2. LockTask 模式(防止退出应用) ```java dpm.setLockTaskPackages(admin, new String[]{packageName}); // ❌ 需要 Device Owner activity.startLockTask(); // ❌ 需要 Device Owner ``` ### 3. 防止用户按 Home、Back 键退出 - 只有在 LockTask 模式下才能完全阻止 ## 🧪 快速测试步骤 ### 步骤 1:编译并安装 ```bash ./gradlew assembleDebug adb install app/build/outputs/apk/debug/app-debug.apk ``` ### 步骤 2:启动应用并观察日志 ```bash # 终端 1:查看日志 adb logcat -c && adb logcat | grep -E "MyApplication|KioskHelper|KioskManager" # 终端 2:启动应用 adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry ``` ### 步骤 3:验证功能 #### ✅ 验证屏幕常亮 1. 启动应用 2. 等待 1 分钟 3. 屏幕应该保持亮屏状态 #### ✅ 验证全屏沉浸式 1. 启动应用 2. 观察状态栏和导航栏是否隐藏 3. 下拉状态栏后观察是否自动重新隐藏 #### ✅ 验证自动初始化(重点) 查看日志中是否包含: ``` D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry ``` 如果看到这条日志,说明自动初始化成功,**无需在 JS 中调用**。 ## 🔍 故障排查 ### 问题 1:看不到日志 ```bash # 清空日志缓存 adb logcat -c # 使用更详细的过滤 adb logcat -v time | grep -i kiosk ``` ### 问题 2:应用闪退 ```bash # 查看崩溃日志 adb logcat -v time | grep -E "AndroidRuntime|FATAL" ``` 常见原因: - `BuildConfig` 未正确导入 - 缺少依赖库 解决方法: ```java // 在 MyApplication.java 中添加 import import com.YuyeTech.HeartRate.BuildConfig; ``` ### 问题 3:Application 未替换 检查 `AndroidManifest.xml` 中的 `` 标签: ```xml ...> ``` 如果是 `io.dcloud.application.DCloudApplication`,说明未正确修改。 ## 📊 预期结果对比 | 功能 | 无 Device Owner | 有 Device Owner | |------|----------------|----------------| | 自动初始化 | ✅ 正常 | ✅ 正常 | | 屏幕常亮 | ✅ 正常 | ✅ 正常 | | 全屏沉浸 | ✅ 正常 | ✅ 正常 | | 禁用锁屏 | ⚠️ 无效 | ✅ 正常 | | 防止退出 | ⚠️ 无效 | ✅ 正常 | | Home/Back 拦截 | ⚠️ 部分 | ✅ 完全 | ## 🎯 核心测试点 ### ✅ 验证"无需 JS 调用" **测试方法**: 1. 不修改任何 UniApp 的 JS 代码 2. 直接编译并安装 APK 3. 启动应用 4. 查看日志是否有 `✅ 绑定 Kiosk 到: PandoraEntry` **判断标准**: - ✅ 如果看到日志,说明成功集成 - ❌ 如果没有日志,检查 `AndroidManifest.xml` 中的 Application 配置 ## 📝 调试技巧 ### 技巧 1:实时日志监控 ```bash # 彩色高亮日志(Linux/Mac) adb logcat | grep --color=always -E "MyApplication|KioskHelper|KioskManager|ERROR" # PowerShell(Windows) adb logcat | Select-String -Pattern "MyApplication|KioskHelper|KioskManager|ERROR" ``` ### 技巧 2:抓取完整初始化日志 ```bash # 清空日志 → 启动应用 → 等待 3 秒 → 保存日志 adb logcat -c && adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry && sleep 3 && adb logcat -d > app_start.log ``` ### 技巧 3:检查 Activity 生命周期 ```bash 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 以启用完整功能。