1

銀河ネクサス用のユーティリティアプリを作成しています。タブレットをセーフ モードで再起動したい。

覗いてみましたPowerManager

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

これにより、デバイスがセーフ モードで再起動されないようです。プログラムでデバイスを再起動することはできますか? どのように?

4

2 に答える 2

0

基本的に、セーフモードに入るには2つの既知の方法があります。

  1. Androidは、新しくインストールされたアプリの問題を検出し、セーフモードに入るときにアプリを強制終了します。

  2. 電源投入時のキー押下の組み合わせ。

それを行う別の方法があるとは思えません。もしあれば、カスタムROMのほとんどのリカバリと電源メニューにはそれが含まれていました。

渡される文字列reboot()はカーネルパラメータであり、デバイスのカーネルにそのオプションがある場合にのみ有効になります。ここでいくつかのオプションを試すことができます。

アップデート:

セーフモードはPackageManagerService、Androidのシステムサーバー(「パッケージ」サービス)内にあるトグルです。

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

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

そしてここにどんなAPPからでもそれを使うことについてのいくつかのポイントがあります:

  1. このコードを実行するプロセスは、システムであるか、ルート権限を持っている必要があります
  2. これは内部サービスであり、外部コードへの立ち入りは禁止されています。ただし、一部のシステムクラスは、実際IPackageManagerにこのサービスの実装スタブ()を取得します。
  3. モード変更は、システムの準備がまだ整っていない場合にのみ役立ちます。
  4. アプリがセーフモードを何らかの方法でオンにしているとしましょう。セーフモードが有効になっているため、オフにすることはできません。システムアプリでない限り、ROMに組み込まれています。
于 2013-01-27T06:49:39.030 に答える
0

セーフ モードに入る 3 つ目の方法 (GingerBread 2.3.5 以降で利用可能)

デバイスの電源が完全に入っている状態で、電源ボタンを押し、電源オフのメニュー項目を長押しします。セーフモードに入るオプションが表示されます。このため、プログラムでセーフ モードに入る方法が存在する可能性があります。トラブルシューティングに役立つことを願っています。さらに別の情報源を参照したライフハッカーの記事の記憶から行っています。

于 2013-02-11T21:35:05.020 に答える