为什么我的应用程序会抛出`android.permission.REBOOT SecurityException`?

osc*_*car 5 permissions android reboot

我写了一个使用的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)
Run Code Online (Sandbox Code Playgroud)

我做错了什么,或者froyo重启时有问题吗?

Sar*_*fan 9

您无法获得此权限.只有使用用于签署固件的相同密钥签名的系统应用程序和应用程序才能获得该权限.

你为什么需要重启?如果你告诉重新启动的必要性,那么可能有人可以建议你更好的方法来完成同样的事情,而无需重新启动.


Ale*_*dam 6

它不能在股票Android手机.但是,正如我在其他类似问题中发布的那样,如果手机已经扎根,那么你根本没有问题:

try {
    Runtime.getRuntime().exec("su");
    Runtime.getRuntime().exec("reboot"); }
catch (IOException e) { }
Run Code Online (Sandbox Code Playgroud)

有关说明,请点击上面的链接.


Don*_*Gru 3

据我所知,此权限只能授予系统应用程序,“用户应用程序”无法获得该权限