2016-09-18 9 views
1

Когда я использую adb для доступа к своему устройству (Android 4.4.2 прямо из производителей с их обычным ромом - его не обычным устройством - он встроен в 2D-сканер штрих-кода), он идет прямо #, который я прочитал, означает, что у меня есть root-доступ. И если я бегу «идентификатор» Я получаю следующее:Android-приложение su в приложении

uid=0(root) gid=0(root) context=u:r:adbd:s0 

Однако, когда я бегу «су» внутри моего приложения, а затем «идентификатор» Я получаю следующее:

uid=10079(u0_a79) gid=10079(u0_a79) groups=50079(all_a79) context=u:r:untrusted_app:s0n 

Так что это явно не работает как root. Я понимаю, что все неправильно, полагая, что оно должно выполняться как root из приложения, или есть что-то еще, что мне нужно сделать, чтобы заставить это работать?

Любой совет будет очень благодарен.

Вот код, который я сейчас использую для запуска су и Ид команды:

p = Runtime.getRuntime().exec("su"); 
      p.waitFor(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 

      String line = ""; 
      while ((line = reader.readLine())!= null) { 
       output.append(line + "n"); 
      } 


      p = Runtime.getRuntime().exec("id"); 
      p.waitFor(); 
      reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 

      line = ""; 
      while ((line = reader.readLine())!= null) { 
       output.append(line + "n"); 
      } 

Еще одна вещь, которую я забыл упомянуть - скопировать приложение в/системы/собств-приложение и запустить его оттуда. Еще не повезло.

+0

https://source.android.com/security/selinux/implement.html –

+0

Вы могли решить эту проблему? – user1506104

+0

Производитель отправил мне файл KingRoot.apk. Я запускал его несколько раз, и как только он работал, и мне удалось получить доступ root. Но я также должен настроить и другие устройства, поэтому снова очистил устройство до новой прошивки и выполнил повторяемость (чтобы я мог документировать процесс, который должен выполняться на других устройствах), но еще не успел работать в KingRoot. Производитель занят разговорами со своими инженерами, чтобы найти решение. Я опубликую обновление после его успешного завершения. Благодарю. – Mudders

ответ

-1

У меня был китайский планшет с такой проблемой. Просто переустановите его (замените su двоичный код). Должно сработать.

P.S. Наблюдение за любым кодом также поможет.

+0

Спасибо за ваш комментарий. Обновленный вопрос с кодом, который я использую для запуска команд su и id. Как я могу это сделать? Он пришел с корнем - с самого начала я мог получить доступ к # с оболочкой adb. Я также скопировал новую копию su/system/bin/su и попытался запустить ее напрямую, но у нее была такая же проблема. – Mudders

+0

Unlock Root работал на меня тогда, но их веб-сайт выглядит сломанным или взломанным. Вы можете просто вручную вручную добавить 'su' и [SuperSU] (http://forum.xda-developers.com/apps/supersu/stable-2016-09-01supersu-v2-78-release-t3452703), как apk, в/система. – sssemil

-1

Существует андроид манифест разрешения вы можете использовать, чтобы получить корневой доступ

<uses-permission android:name="android.permission.FACTORY_TEST" /> 

Вашего приложения будет работать в качестве тестового приложения производителя, работающий в качестве корневого пользователя. Таким образом, команда 'su' доступна для вашего приложения.

Однако я сомневаюсь, что Google Play позволит вам загружать в магазин с таким разрешением.

+0

Добавил это разрешение на манифест, но до сих пор нет радости. Все еще работает как пользователь, которого я упомянул в вопросе. Я должен попытаться выяснить, как перезапустить устройство и посмотреть, смогу ли я заставить его работать таким образом. – Mudders

+0

Какой результат после запуска exec ("su")? можете ли вы показать содержимое переменной 'output'? – user1506104

+0

Ничего. После запуска exec («su») нет возвращаемого значения вообще. – Mudders