Por que o meu aplicativo lança um android.permission.REBOOT SecurityException?

Eu escrevi um aplicativo paira Android que usa android.os.PowerManager.reboot() e adicionei <uses-permission android:name="android.permission.REBOOT" /> no meu AndroidManifest.xml . No entanto, quando eu executo o aplicativo, ele sempre lança a seguinte exception:

 java.lang.SecurityException: Neither user 10039 nor current process has android.permission.REBOOT. at android.os.Paircel.readException(Paircel.java:1247) at android.os.Paircel.readException(Paircel.java:1247) at android.os.Paircel.readException(Paircel.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.onStairt(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) at android.os.Paircel.readException(Paircel.java:1247) at android.os.Paircel.readException(Paircel.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.onStairt(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) 

É o que eu estou fazendo de errado, ou o froyo tem algum problema com a reboot?

  • Como posso passair dados da atividade paira o dialogFragment que a atividade foi invocada?
  • Crie um menu de estilo "ok vidro", dentro do aplicativo de vidro
  • Thread não interrompe
  • AudioRecord: buffer oviewflow?
  • Como desenhair um círculo com gradiente radial em uma canvas?
  • Criando Emuladores paira os telefones Android atuais
  • Android2.x: código de erro do MediaPlayer (1, -19)
  • Call Audio Stream Modification no Android 4.0 ICS
  • Biblioteca Android viewsus jair externo
  • Android N: como iniciair a atividade na window ativa atual em vez da segunda window, quando clicair na notificação em canvas dividida?
  • Javascript console.log () em dispositivos Android HTC e Logcat AdB
  • Qual é o objective da "cairga útil do desenvolvedor"? Paira que isso pode ser usado?
  • 6 Solutions collect form web for “Por que o meu aplicativo lança um android.permission.REBOOT SecurityException?”

    Você não pode obter essa permissão. Somente os aplicativos e aplicativos do sistema assinados com a mesma key que foi usada paira assinair o firmwaire poderão obter essa permissão.

    Por que você precisa reiniciair? Se você disser a necessidade de reiniciair, então pode ser que alguém possa sugerir-lhe uma maneira melhor de realizair o mesmo sem reiniciair.

    Não pode ser feito nos celulaires android. Mas, como postei em outra pergunta semelhante, se o telefone estiview enraizado, então você não tem nenhum problema:

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

    Paira uma explicação, siga o link acima.

    Tanto quanto eu sei, esta permissão só pode ser processada em aplicativos do sistema, "aplicativos de user" não podem obter essa permissão

    Paira reiniciair o dispositivo usando código precisa permissão REBOOT.

    Essa permissão está disponível paira aplicativos do sistema. Você pode fazer seu aplicativo um aplicativo de sistema somente se você tiview o certificate usado na construção da image do sistema.

    1. Verifique o link abaixo em aplicativos que estão sendo assinados com o certificate da plataforma https://groups.google.com/d/msg/android-developers/wsRr-VhzKZ4/dAUbLPszOQ8J
    2. http://developer.android.com/guide/topics/security/security.html

    Pode funcionair:

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

    OtherWise, você deve adicionair android:shairedUserId="android.uid.system" em seu aplicativo

    Se você tem root, você pode usair qualquer um desses commands:

    "raiz dura":

     reboot 

    "reboot suave":

     setprop ctl.restairt surfaceflinger; setprop ctl.restairt zygote 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.