Android ICS / JB,以编程方式重启到安全模式?

时间:2013-01-27 05:44:59

标签: android android-4.2-jelly-bean

我正在为我的星系纽带制作一个实用程序。我想以安全模式重新启动平板电脑。

我试图查看PowerManager

PowerManager p = (PowerManager) getSystemService(POWER_SERVICE);
p.reboot(reason);

似乎这不会在安全模式下重启设备。是否可以通过编程方式重启设备?怎么样?

2 个答案:

答案 0 :(得分:0)

  

基本上有两种已知的进入安全模式的方法:

     
      
  1. Android检测到新安装的应用程序出现问题,并在进入安全模式时强制关闭它。

  2.   
  3. 电源应用时的按键组合;

  4.   

我怀疑还有另一种方法。如果有的话,Custom ROMS的大多数恢复和电源菜单都会包含它。

传递给reboot()的字符串是一个内核参数,只有在设备的内核具有该选项时才会生效。你可以在这里尝试一些选择。

<强>更新

安全模式切换位于Android系统服务器的PackageManagerService内(“包”服务):

public void enterSafeMode() {
    enforceSystemOrRoot("Only the system can request entering safe mode");

    if (!mSystemReady) {
        mSafeMode = true;
    }
}

以下是关于在任何APP中使用它的一些观点:

  1. 执行此代码的流程必须是System或具有Root previleges
  2. 这是一项内部服务,禁止使用任何外部代码。但是,某些系统类确实获得了此服务的实现存根(IPackageManager)。
  3. 模式更改仅在系统尚未就绪时才有用。
  4. 假设您的应用确实打开了安全模式,由于启用了安全模式,它将无法将其关闭。除非它是一个内置于ROM的系统应用程序。

答案 1 :(得分:0)

进入安全模式的第三种方式(在GingerBread 2.3.5之后的某个时间可用)

设备完全启动后,按电源按钮,LONG按下电源关闭菜单项。选项似乎进入安全模式。因此,现在可能有一种方法可以以编程方式进入安全模式。当然希望能帮助排除故障。我将从记忆中读到一篇引用另一个来源的生活方式文章。