プログラムでモバイルをシャットダウンすることは可能ですか。つまり、su コマンドを使用しません。
6 に答える
可能ですが、アクセスできるRooted
Android デバイスが必要Superuser
です。アプリが で署名されていない限り、ルートなしでは実行できませんSystem Firmware Key
。次のコードを使用してみてください。
シャットダウン:
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 では機能しないとどこかで読みましたが、確認していません]
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をチェックして、そこにあるものを投稿することもできますか?
これは、通常の SDK アプリケーションから行うことはできません。これを実行できるのは、システム ファームウェア署名キーで署名されたアプリケーションのみです。
これは、システムコマンドを実行するために使用するコードです。
void shutdown_sys()
{
Process chperm;
try {
chperm=Runtime.getRuntime().exec("su");
DataOutputStream os =
new DataOutputStream(chperm.getOutputStream());
os.writeBytes("shutdown\n");
os.flush();
chperm.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Android アプリからこの関数を呼び出します。システムで su が機能している場合は機能します。うまくいかない場合はお知らせください。テストする準備ができている Android ベースがありません。ただし、再起動でも同じことが機能します。したがって、シャットダウンはLinuxシェルコマンドでもあり、Androidにもあると思います..すべてのベスト
本文のタイトルとコード スニペットに類似点はありません。このスニペットは、キーパッドのロックとロック解除に使用される KeyGuardManager に関連しています。
電話をシャットダウンするには、PowerManager または SU コマンドを使用する必要があります。(ルート化されたデバイス上。)
デバイスがルート化されている場合は、以下の解決策を試すことができます
シャットダウン:
try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
再起動:
同じコードです。"reboot"
代わりに を使用して"reboot -p"
ください。