2015-11-25 33 views
5

Quando uso di questo codice:Android Runtime.getRuntime() exec ("su") java.io.IOException: Permesso negato

process = Runtime.getRuntime().exec("su"); 
os = new DataOutputStream(process.getOutputStream()); 

c'è sempre un errore, tutte le idee? In esecuzione su un dispositivo virtuale Android

W/System.err(3211): java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null 
W/System.err(3211):  at java.lang.ProcessManager.exec(ProcessManager.java:211) 
W/System.err(3211):  at java.lang.Runtime.exec(Runtime.java:174) 
W/System.err(3211):  at java.lang.Runtime.exec(Runtime.java:247) 
W/System.err(3211):  at java.lang.Runtime.exec(Runtime.java:190) 
W/System.err(3211):  at com.example.executeandroidtest.ShellUtils.execCommand(MainActivity.java:661) 
W/System.err(3211):  at com.example.executeandroidtest.MainActivity$3.run(MainActivity.java:410) 
W/System.err(3211):  at java.lang.Thread.run(Thread.java:818) 
W/System.err(3211): Caused by: java.io.IOException: Permission denied 
W/System.err(3211):  at java.lang.ProcessManager.exec(Native Method) 
W/System.err(3211):  at java.lang.ProcessManager.exec(ProcessManager.java:209) 
W/System.err(3211):  ... 6 more 
+1

Non è ovvio? Vuoi ottenere i privilegi di super utente, ma Android ha delle restrizioni di sicurezza. –

+0

Quindi, come posso risolverlo? – GuiYQ

+1

Il tuo dispositivo è rootato? – Ben

risposta

1

Hai provato aggiungere questa autorizzazione

<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/> 
+5

Ho aggiunto questo, ma ancora questo problema. – GuiYQ

0

Causato da: java.io.IOException: Permesso negato

  1. trovare dove su è, ad esempio: /system/xbin/su
  2. permesso di file su di: ls -al /system/xbin/su
  3. cambiare mod se necessario: chmod 4755 su
  4. riprovare.
Problemi correlati