2010-06-11 5 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

는 어쩌면 또 다른있다, 나는 다른 읽기 권한이보고 싶은데 자신의 응용 프로그램과 함께 그 일을 시도하지

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

    String[] files = dataDir.list(); 

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

또한 (예를 들어 Runtime.exec의()) 다른 프로세스를 생성하여나요 ContentProviders를 통해 찾고있는 데이터를 얻는 방법.

+0

이것은 도움이되지 않습니다. 앱에 의해 생성 된 프로세스는 앱과 동일한 사용자 ID로 실행되므로 동일한 권한을가집니다. 물론 "su"루트 심과 같은 setuid 프로세스를 호출하지 않는 한. –

-2

Java 코드가 아닌 PC 콘솔에서/data 폴더에 액세스하려는 경우 adb shell 명령을 사용할 수 있습니다. 제한이 없습니다.

는 에뮬레이터 실행, 또는

+0

adb 쉘은 루팅 된 디바이스가 없어도 루트 액세스를 제공하지 않지만 에뮬레이터에서 작동합니다 – Dori

1

데이터 폴더는 시스템 프로세스에 의한 경우를 제외 장치에 액세스 할 수없는 것을 실행하기 전에 USB를 통해 휴대 전화를 연결해야합니다. adb를 통해 라우트되지 않은 전화의 데이터 폴더에 액세스 할 수 없습니다. 에뮬레이터 또는 루팅 된 전화기의 데이터 폴더에 액세스 할 수 있습니다.

관련 문제