2013-10-10 2 views
8

Я хочу программно найти в своем приложении, если Android-телефон укоренен. Я нашел много ссылок, таких как: Determine if running on a rooted device Effective way to programatically check if I'm rooted on Android? обсуждение на эту же тему. Однако, как упоминалось в этих ссылках, нет никого и определенного способа узнать. Эти сообщения довольно старые, и мне было интересно, есть ли что-то лучше для этого сейчас в последних выпусках?Как проверить, установлен ли телефон Android?

Заранее благодарен!

+0

Вы не получите ответ на этом форуме с таким вопросом. Вы должны попробовать некоторые из ваших/собранных идей и спросить о проблеме, с которой вы встречались во время ее реализации. С другой стороны, некоторая идея заключалась бы в том, чтобы иметь несколько методов, которые пробовали каждый сценарий (назовите 'su', разрешение суперпользователя запроса, попробуйте написать в привилегированной папке ...), и если какой-либо из них будет успешным, вы будете на корневое устройство. – JScoobyCed

+1

Мое основное намерение, поставив вопрос, было выяснить, есть ли что-то недавно добавленное в андроид-фрейм, чтобы проверить на root. Очевидно нет! Я получаю те же ответы, что и в более старых сообщениях. В любом случае спасибо! – Keya

ответ

5

Вы можете использовать библиотеку roottools. Они предлагают метод проверки доступа root. https://code.google.com/p/roottools/

+0

Спасибо. Я знаю библиотеку roottools. Это решает цель. Хотя он искал какое-то независимое независимое решение. – Keya

+0

@ Keya у вас есть сторонние независимые решения или какой-то API, чтобы обнаружить укоренение в телефонах Android. – Learner

+0

Эй, Ученик, извините, я не нашел никакого решения. Я искал его для POC, но потом мы переместили нашу технику. Следовательно, он не преследовал его дальше. Обновляйте, если найдете что-нибудь. Благодаря! – Keya

20

Я завернут этот код (работает нормально без какого-либо другого внешней банки/Lib) от RootTools

private static boolean isRooted() { 
    return findBinary("su"); 
} 



public static boolean findBinary(String binaryName) { 
    boolean found = false; 
    if (!found) { 
     String[] places = {"/sbin/", "/system/bin/", "/system/xbin/", "/data/local/xbin/", 
       "/data/local/bin/", "/system/sd/xbin/", "/system/bin/failsafe/", "/data/local/"}; 
     for (String where : places) { 
      if (new File(where + binaryName).exists()) { 
       found = true; 
       break; 
      } 
     } 
    } 
    return found; 
} 
+0

Это обеспечивает хороший длинный список возможных мест, где su может существовать. Благодаря! – Keya

+0

Ну, это в основном тот же метод, что и roottools: https://code.google.com/p/roottools/source/browse/trunk/Stable/RootTools-sdk3-generic/src/com/stericson/RootTools/ internal/RootToolsInternalMethods.java # 597 Даже содержимое массива находится в том же порядке;) – MatF

+9

@MatF, как вы можете видеть, я уже сказал в своем ответе. Я завернул этот код FROM RootTools ... – StErMi

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