2010-06-11 220 views
1
try { 
    Runtime rt = Runtime.getRuntime(); 
    Process pcs = rt.exec("ls -l /data"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(pcs 
      .getInputStream())); 
    String line = null; 
    while ((line = br.readLine()) != null) { 
     Log.e("line","line="+line); 
    } 
    br.close(); 
    pcs.waitFor(); 
    int ret = pcs.exitValue(); 
    Log.e("ret","ret="+ret); 
    } catch (Exception e) { 
    Log.e("Exception", "Exception", e); 
    } 

只打印「ret = 0」,如何打印正確的路徑?無法訪問android/data文件夾?

回答

4

Android保護它的內部目錄。您只能訪問/data/data/your_package下的目錄。我相信普通用戶在普通設備上的/data目錄沒有Read權限。

0

你嘗試用自己的應用程序做,而不是產卵另一個進程(如的Runtime.exec())

File dataDir = new File("/data"); 

    String[] files = dataDir.list(); 

    for (int i = 0 ; i < files.length ; i++) { 
     Log.d(TAG, "File: "+files[i]); 
    } 

另外,我想看看不同的讀取權限,也許還有另一種通過ContentProviders獲取您正在查找的數據的方式。

+0

這不會有幫助 - 應用程序產生的進程與應用程序具有相同的用戶ID,因此具有相同的權限。除非你正在調用一個setuid進程,比如一個「su」root shim。 – 2014-01-06 16:27:30

-2

如果您不想從java代碼訪問/ data文件夾,而是從您的PC控制檯訪問 - 您可以使用adb shell命令。它沒有任何限制。

記得有一個仿真的運行,或者通過USB運行

+0

如果沒有根設備,adb shell不會爲您提供root訪問權限,但它會在模擬器上工作 – Dori 2012-01-30 18:37:20

1

數據文件夾是一個設備上無法訪問除系統進程之前,連接手機。您無法通過adb訪問無根電話的數據文件夾。您可以訪問模擬器或固定電話的數據文件夾。