2010-08-11 196 views
5

我写了一个使用android.os.PowerManager.reboot()的Android应用程序,并在AndroidManifest.xml中添加了<uses-permission android:name="android.permission.REBOOT" />。然而,当我运行的应用程序,它总是抛出以下异常:为什么我的应用程序抛出一个`android.permission.REBOOT SecurityException`?

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有一些问题,重新启动?

+1

文件?你可以发布吗? – RoflcoptrException 2010-08-11 08:21:10

回答

3

据我所知,这个权限只能被磨碎到系统应用,“用户应用”不能获得该权限

9

你不能把这个权限。只有用于签署固件的相同密钥签署的系统应用程序和应用程序才能获得该许可。

为什么你需要重新启动?如果你说重新启动的必要性,那么可能有人会建议你一个更好的方式来完成同样的事情而不用重新启动。

5

它不能在股票Android手机完成。但是,正如我张贴在其他类似的question,如果手机扎根,那么你就完全没有问题:

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

有关说明,按照上面的链接。

+0

这不起作用 – 2016-12-10 07:25:16

1

它可以工作:

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

否则,您必须添加android:sharedUserId="android.uid.system"到应用程序

0

如果你有根,你可以使用任何这些命令:

“硬根”:

reboot 

“软重启”:你到底有在清单中添加

setprop ctl.restart surfaceflinger; setprop ctl.restart zygote 
相关问题