5

を使用する Android アプリを作成しandroid.os.PowerManager.reboot()、. ただし、アプリを実行すると、常に次の例外がスローされます。<uses-permission android:name="android.permission.REBOOT" />AndroidManifest.xml

java.lang.SecurityException: Neither user 10039 nor current process has android.permission.REBOOT. at android.os.Parcel.readException(Parcel.java:1247)
at android.os.Parcel.readException(Parcel.java:1247)
at android.os.Parcel.readException(Parcel.java:1235)
at android.os.IPowerManager$Stub$Proxy.reboot(IPowerManager.java:427)
at android.os.PowerManager.reboot(PowerManager.java:481)
at Test.testPower(Test.java:374)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
at android.os.Parcel.readException(Parcel.java:1247)
at android.os.Parcel.readException(Parcel.java:1235)
at android.os.IPowerManager$Stub$Proxy.reboot(IPowerManager.java:427)
at android.os.PowerManager.reboot(PowerManager.java:481)
at com.fsl.cts.FSLPlaybackTest.testPower(FSLPlaybackTest.java:374)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)

私が間違っていることはありますか、それとも froyo の再起動に問題がありますか?

4

6 に答える 6

9

この許可を得ることができません。システム アプリケーションと、ファームウェアの署名に使用されたのと同じキーで署名されたアプリケーションのみが、そのアクセス許可を取得できます。

なぜ再起動する必要があるのですか?再起動の必要性を伝えると、誰かが再起動せずに同じことを達成するためのより良い方法を提案できるかもしれません.

于 2010-08-11T12:55:03.360 に答える
6

在庫のAndroid携帯ではできません。しかし、他の同様の質問に投稿したように、電話がルート化されていれば、まったく問題はありません。

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

説明については、上記のリンクをたどってください。

于 2011-01-23T07:47:55.770 に答える
3

私の知る限り、この権限はシステム アプリにのみすりおろすことができ、「ユーザー アプリケーション」はその権限を取得できません。

于 2010-08-11T09:58:21.593 に答える
2

コードを使用してデバイスを再起動するには、REBOOT 権限が必要です。

この権限は、システム アプリケーションで使用できます。システム イメージの構築に使用した証明書がある場合にのみ、アプリケーションをシステム アプリケーションにすることができます。

  1. プラットフォーム証明書で署名されているアプリケーションについては、以下のリンクを確認してくださいhttps://groups.google.com/d/msg/android-developers/wsRr-VhzKZ4/dAUbLPszOQ8J
  2. http://developer.android.com/guide/topics/security/security.html
于 2011-08-18T11:25:55.243 に答える
1

それは働くことができます:

 String cmd = "su -c shutdown";
         try{
         Runtime.getRuntime().exec(cmd);
   }catch(IOException e){
       e.printStackTrace();
   }
         }

android:sharedUserId="android.uid.system"それ以外の場合は、アプリケーションに追加する必要があります

于 2012-05-17T16:14:17.693 に答える
0

root を持っている場合は、これらのコマンドのいずれかを使用できます。

「ハードルート」:

reboot

「ソフトリブート」:

setprop ctl.restart surfaceflinger; setprop ctl.restart zygote
于 2014-11-03T23:06:18.773 に答える