2013-06-16 3 views
0

Im пытается получить root-доступ в моем приложении, но фоновый поток застрял в waitFor(); Что я делаю неправильно?Не могу запросить root на android

 try { 
      Log.i("DEBUG", "start"); 
      Runtime.getRuntime().exec("su").waitFor(); 
      Log.i("DEBUG", "yay"); 

      .......... 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
+0

Ваш мобильный корень? – Blackbelt

+0

есть. корневой и суперпользователь появился, спрашивая, должен ли я его предоставить, я выбрал «разрешить» и проверил, что он должен помнить мой выбор. –

+0

Попробуйте использовать 'Runtime.getRuntime(). Exec (" su \ n "). WaitFor();' –

ответ

0

Проверьте этот код, который я написал для своего собственного программного обеспечения. Это работает хорошо.

Process p;  
try { 
     // Try to execute SU 
     p = Runtime.getRuntime().exec(new String[]{"su", "-c", "/system/bin/sh"}); 
     DataOutputStream stdin = new DataOutputStream(p.getOutputStream()); 
     // User has responded.. Let's see whats the response. 
     // Execute ID to see if we are root 
     stdin.writeBytes("id\n"); 
     DataInputStream stdout = new DataInputStream(p.getInputStream()); 
     byte[] buffer = new byte[4096]; 
     int read = 0; 
     String out = new String(); 
     // Read the output 
     while(true){ 
      read = stdout.read(buffer); 
      out += new String(buffer, 0, read); 
      if(read<4096) break; 
     } 
     // Check output 
     if(!out.contains("root")){ 
      // User denied the root prompt 
      Toast.makeText(getApplicationContext(), "Failed To Get Root! Are You Rooted!?", Toast.LENGTH_SHORT).show(); 
     } else { 
      // Use granted... Do what you want here. Or set a flag that indicates we are now root 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
+0

работает! Тем не менее я понятия не имею, почему мой поток застрял в waitFor(); он счастлив, наконец, работает! Благодаря! –

+0

Добро пожаловать @AdnanElezovic. Я забыл определить процесс p. Я отредактировал код, чтобы быть прав. Я думаю, вы поняли это. Я отредактировал его для других, чтобы использовать :) –

Смежные вопросы