本项目已配置为在启动时自动启用 Kiosk 模式,无需通过 JS 调用。包括以下功能:
app/src/main/java/com/YuyeTech/HeartRate/MyApplication.javaKioskHelper.disableLockScreen()KioskManagercom.YuyeTech.HeartRate.MyApplication已添加必要权限:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
已注册 Device Admin Receiver
已注册开机启动 Receiver
app/src/main/java/com/YuyeTech/HeartRate/KioskHelper.javadisableLockScreen(Activity) - 禁用锁屏keepScreenOn(Activity) - 屏幕常亮enableLockScreen(Activity) - 恢复锁屏app/src/main/res/xml/device_admin.xml./gradlew assembleRelease
⚠️ 重要:只有设置为 Device Owner 后,才能完全禁用锁屏和使用 LockTask 模式。
安装 APK:
adb install app-release.apk
设置为 Device Owner:
adb shell dpm set-device-owner com.YuyeTech.HeartRate/com.ble.mylockview.admin.KioskDeviceAdminReceiver
adb shell dumpsys device_policy | grep "Device Owner"
如果显示您的应用包名,说明设置成功。
MyApplication.onCreate() 执行PandoraEntry Activity 创建KioskHelper.disableLockScreen()KioskManager.attach()Debug 模式 (BuildConfig.DEBUG = true):
Release 模式 (BuildConfig.DEBUG = false):
在 Debug 模式下,可以直接使用 ADB:
adb shell am task lock stop
编辑 myLockView/src/main/java/com/ble/mylockview/admin/KioskManager.java:
private static final String ADMIN_PASSWORD = "您的密码";
编辑 KioskManager.java:
private static final int ADMIN_FINGER_COUNT = 5; // 手指数量
private static final long ADMIN_HOLD_TIME = 5000; // 长按时间(毫秒)
在 AndroidManifest.xml 中移除或禁用 BootReceiver:
<receiver
android:name="com.ble.mylockview.boot.BootReceiver"
android:enabled="false" <!-- 改为 false -->
...>
原因:未设置为 Device Owner 解决:按照"第二步"设置 Device Owner
错误:Not allowed to set the device owner...
解决:
dpm set-device-owner 命令解决:
如果失败,使用 ADB:
adb shell am force-stop com.YuyeTech.HeartRate
或者移除 Device Owner:
adb shell dpm remove-active-admin com.YuyeTech.HeartRate/com.ble.mylockview.admin.KioskDeviceAdminReceiver
说明:应用可以正常运行,但 Kiosk 功能有限 解决:如需完整 Kiosk 功能,必须设置为 Device Owner
// 在任何 Activity 中
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 禁用锁屏(必须在 setContentView 之前)
KioskHelper.disableLockScreen(this);
KioskHelper.keepScreenOn(this);
setContentView(R.layout.activity_main);
}
}
// 在 Activity 生命周期中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
KioskManager.attach(this);
}
@Override
protected void onResume() {
super.onResume();
KioskManager.onResume();
}
@Override
protected void onPause() {
super.onPause();
KioskManager.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
KioskManager.onDestroy();
}
生产环境:
ADMIN_PASSWORD 改为强密码发布前检查:
BuildConfig.DEBUG = false备份方案:
如有问题,请检查日志:
adb logcat | grep -E "KioskManager|MyApplication|KioskHelper"
关键日志标签:
KioskManager - Kiosk 核心功能MyApplication - 应用初始化KioskHelper - 锁屏控制BootLauncher - 开机启动最后更新:2026-01-22 版本:1.0