1

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

我试着往里看PowerManager

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

看来这不会以安全模式重新启动设备。是否可以以编程方式重新启动设备?如何?

4

2 回答 2

0

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

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

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

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

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

更新:

安全模式是切换在PackageManagerServiceAndroid 的系统服务器(“包”服务)内部:

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

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

以下是关于从任何 APP 使用它的一些要点:

  1. 执行此代码的进程必须是系统或具有 Root 权限
  2. 这是一项内部服务,禁止使用任何外部代码。不过,某些系统类确实获得IPackageManager了该服务的实现存根 ()。
  3. 模式更改仅在系统尚未准备好时才有用。
  4. 假设您的应用程序确实以某种方式打开了安全模式,由于启用了安全模式,因此无法将其关闭。除非它是一个系统应用程序,内置在 ROM 中。
于 2013-01-27T06:49:39.030 回答
0

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

在设备完全通电的情况下,按电源按钮,然后长按电源关闭菜单项。一个选项似乎进入了安全模式。因此,现在可能有一种以编程方式进入安全模式的方法。当然希望能帮助解决问题。我正在记忆一篇引用了另一个来源的 lifehacker 文章。

于 2013-02-11T21:35:05.020 回答