web-dev-qa-db-ja.com

プログラムによるスイッチオフAndroid電話

プログラムでAndroid電話をオフにできますか?

次のスニペットを使用していますが、うまくいきませんでした。

KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 

lock.disableKeyguard(); // to disable

lock.reenableKeygaurd();// to enable

また、許可を使用しました。

36
Sri Sri

PowerManagerを使用して再起動することもできます(これは再起動を保証するものではありません-OSがキャンセルする場合があります)。

http://developer.Android.com/reference/Android/os/PowerManager.html#reboot(Java.lang.String)

REBOOT権限が必要です。

http://developer.Android.com/reference/Android/Manifest.permission.html#REBOOT

キーガードを有効/無効にしようとするときにlogcatをチェックして、そこにあるものを投稿することもできますか?

16
xil3

として CommonsWareは既に これは通常のSDKアプリケーションでは不可能であると述べました。 System Firmware Keyを使用してアプリに署名する必要があります。ただし、アプリがRoot特権を持っている場合は可能です。次のコードを使用してみてください(SUアクセスがある場合)

シャットダウン:

try {
    Process proc = Runtime.getRuntime()
                    .exec(new String[]{ "su", "-c", "reboot -p" });
    proc.waitFor();
} catch (Exception ex) {
    ex.printStackTrace();
}

再起動:

同じコード、"reboot"の代わりに"reboot -p"を使用します。


[別のメモ:これらのコマンドは、Stock HTC ROMでは機能しないが、自分自身を確認していない]と読みました]

34
Sheharyar

通常のSDKアプリケーションからこれを行うことはできません。これを実行できるのは、システムファームウェア署名キーで署名されたアプリケーションのみです。

23
CommonsWare

より良い解決策は以下を実行することです:

su -c am start -a Android.intent.action.ACTION_REQUEST_SHUTDOWN

これにはProcessを使用できます。

7
tristan2468

SigOrSystem権限Android.permission.SHUTDOWNがある場合、保護されたACTION_REQUEST_SHUTDOWNインテントを次のように上げることができます。

Intent intent = new Intent("Android.intent.action.ACTION_REQUEST_SHUTDOWN");
intent.putExtra("Android.intent.extra.KEY_CONFIRM", false);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Android 4.0より前は、この権限は署名のみでした。

6
Rupert Rawnsley

実際、私の経験では、上記の応答は完全に正確ではありません。画面を暗くする方法を試していたところ、次のことがわかりました。

Window w = getWindow();
WindowManager.LayoutParams lp = w.getAttributes();
lp.screenBrightness =.005f;
w.setAttributes (lp);

0.005の代わりに、画面の輝度値0を使用すると、実際にSamsung Galaxy Tabがオフになります。

これはどこかバグだと思いますが、他のAndroidモデルでコードをテストするのに十分なハードウェアがありません。私のコードは私の電話を完全に署名していなくても閉じていることをあなたに伝えることができます。

2
Rich