2013-10-10 34 views
8

我想在我的應用程序中以編程方式查找android手機是否已經植入。我發現了很多鏈接,如:Determine if running on a rooted device Effective way to programatically check if I'm rooted on Android?討論關於同一主題。但是,正如在這些鏈接中提到的那樣,沒有人能夠明確地找到答案。這些帖子相當老,我想知道是否有什麼更好的現在在最近的版本中實現它?如何檢查android手機是否植根?

在此先感謝!

+0

(沒有任何其他外部JAR/lib中工作確定),你會不會在這個論壇上有這樣的問題得到答案。您應該嘗試一些您的/收集的想法,並詢問您在實施過程中遇到的問題。另一方面,有一個想法是有幾個方法來嘗試每個場景(調用'su',請求超級用戶權限,嘗試寫入特權文件夾...),如果有任何成功,那麼你在根植設備。 – JScoobyCed

+1

我發佈這個問題的主要目的是爲了瞭解是否最近在android框架中添加了任何東西來檢查根目錄。顯然不是!我得到的答案與舊帖子中的答案相同。不管怎麼說,多謝拉! – Keya

回答

5

您可以使用roottools庫。他們提供了一種檢查root訪問權限的方法。 https://code.google.com/p/roottools/

+0

謝謝。我知道roottools庫。它解決了這個目的。雖然正在尋找一些第三方獨立解決方案。 – Keya

+0

@Keya你有沒有任何第三方獨立解決方案或一些API來檢測Android手機中的生根 – Learner

+0

嗨Learner,對不起,我沒有找到任何解決方案。我正在尋找POC,但後來我們轉移了技術。因此沒有進一步追求。如果發現任何問題,請更新。謝謝! – Keya

20

我裹着這代碼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/內部/ RootToolsInternalMethods.java#597 即使數組內容是在同一個順序;) – MatF

+9

@MatF,你可以看到我已經在我的答案中說過。我從RootTools中包裝了該代碼... – StErMi

相關問題