2011-01-02 10 views
12

コードでデバイスを再起動する方法があるかどうかを知りたいと思います。Android 2.2:デバイスをプログラムで再起動する

Intent i = new Intent(Intent.ACTION_REBOOT); 
i.putExtra("nowait", 1); 
i.putExtra("interval", 1); 
i.putExtra("window", 0); 
sendBroadcast(i); 

をそしてREBOOTの権限を追加しましたが、それはまだ仕事をdoesntの:アイブ氏は試してみました。

おかげ

電話が根ざしている場合
+1

"プラットフォーム証明書"で私のアプリケーションに署名する必要があると思います。誰も私にこれを行う方法を教えてもらえますか?私のAndroidタブレットには、このアプリを市場にリリースする予定はない。ありがとう – Johan

+14

HTC Desireなら、GPSをオンにしてOpenGLで3Dレンダリングをすることができます。この組み合わせにより、電話機が迅速に過熱され、再起動されます。 –

+0

処理していない保留中のインテントが十分にある場合(たとえば、インテントを処理するスレッドが他のものでブロックされている場合など)、Android 2.2(または2.3)デバイスが自動的に再起動します。これは決してデバイスを再起動するための実際の方法ではありません。 – Michael

答えて

-4

、それは実際には非常に簡単です:

try { 
    Runtime.getRuntime().exec("su"); 
    Runtime.getRuntime().exec("reboot"); 
} catch (IOException e) { 
}    

最初のコマンドは、スーパーユーザー権限を要求します。 2番目は、電話機を再起動します。 実際の再起動は実行されたコマンドによって処理されるため、マニフェストファイルでは余分な権限は必要ありません。アプリケーションではありません。

+0

これを試してみましたが、これはスーパーユーザー権限を求められました。「アプリケーションにスーパーユーザー権限が与えられました」というトーストメッセージが表示され、例外は検出されませんでしたが、 –

+1

それは動作しません。 –

+1

は動作しません... – JPM

35

これは私のために働くように見えた:ここ

try { 
     Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot" }); 
     proc.waitFor(); 
    } catch (Exception ex) { 
     Log.i(TAG, "Could not reboot", ex); 
    } 
+1

これはうまくいきます!他の答えはしません。 – JPM

+0

同意します。残りは私にとってはうまくいかない。 – TonyTakeshi

+3

rootが必要です。 –

-1

は、ソリューションです。覚えておいて、デバイスは根づかなければなりません。

try{ 
    Process p = Runtime.getRuntime().exec("su"); 
    OutputStream os = p.getOutputStream();          
    os.write("reboot\n\r".getBytes()); 
    os.flush(); 
}catch(IOException) 
0
根ざしたデバイス用それでも

が、ケースであなたはより安全に(process.waitFor()が調整され、独立したのtry-catchで、私たちは、「今」再起動後にコマンドで追加され、適切な例外処理を有しているが欲しいですこれは、それが再起動するだろうことを保証するものではありません(

Process rebootProcess = null; 
try 
{ 
    rebootProcess = Runtime.getRuntime().exec("su -c reboot now"); 
} 
catch (IOException e) 
{ 
    // Handle I/O exception. 
} 

// We waitFor only if we've got the process. 
if (rebootProcess != null) 
{ 
    try 
    { 
     rebootProcess.waitFor(); 
    } 
    catch (InterruptedException e) 
    { 
     // Now handle this exception. 
    } 
} 
0

あなたはおそらく、それが再起動するためにPowerManagerを使用することができます - OSは取り消すことがあります。必要に応じていくつかのデバイスなど)と、おそらくクリーンなコードのために、このを見てみましょうそれ): links
link #2

+2

時間がたつにつれてリンクが壊れた場合に備えて、便利なコードをリンクに加えてください。 –

0

私はXamarinを使用しています。私の場合、解決策は次のとおりです。

Java.Lang.Runtime.GetRuntime().Exec(new String[] { "/system/xbin/su", "-c", "reboot now" }); 
関連する問題