我有一个Android应用程序,它分别列出了已安装的应用程序和系统应用程序。当用户尝试从我的应用程序重新启动设备时,它将打开我的应用程序,而不是默认的家庭启动器。

但是,当设备重新启动到'safe mode'时,所有逻辑崩溃。即,设备以安全模式重新启动到我的应用程序,但未列出任何已安装的应用程序并停止工作。

  • 是否可以使我的应用程序也可以使用'Safe mode'工作?
  • 是否有任何方法可以防止设备在运行应用程序时像使用'safe mode' broadcastreceiver那样进入RECEIVE_BOOT_COMPLETED
  • 什么是设备管理应用程序?在这种情况下有帮助吗?
  • 是否可以通过编程方式检测安全模式?

  • 提前致谢

    最佳答案

    我知道这个问题很古老,但这也许会对某人有所帮助。如果您的应用程序是主要用户的“设备所有者”或“配置文件所有者”,则可以完全禁用安全模式(无需root用户即可运行):

    DevicePolicyManager manager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    ComponentName admin = new ComponentName(getApplicationContext(), DeviceAdminReceiver.class);
    // To disable safe boot
    manager.addUserRestriction(admin, UserManager.DISALLOW_SAFE_BOOT);
    // To enable safe boot again
    // manager.clearUserRestriction(admin, UserManager.DISALLOW_SAFE_BOOT);
    

    编辑:您可以仅通过ADB设置设备所有者或配置文件所有者:https://developer.android.com/studio/command-line/adb#dpm
    adb shell dpm set-device-owner com.example.deviceownerapp/.DeviceAdminReceiver
    

    请注意,在激活设备所有者时,您必须没有添加帐户(尽管您不必进行系统重置,只需从设置中删除所有帐户)。设置设备所有者后,您可以再次添加任何帐户。

    08-25 15:49
    查看更多