2012-06-27 2 views
0

나는 안드로이드 앱을 개발 중이다. 모바일 앱을 테스트 한 결과 내 앱 데이터베이스 (모바일 데이터베이스)를 볼 필요가 있습니다. Mac을 사용하고 있는데 모바일에서 데이터베이스를 가져와 SQLite 브라우저에서 볼 수있는 방법을 혼동합니다.MAC에서 안드로이드 모바일의 데이터베이스를 가져 오는 방법은 무엇입니까?

도움 주셔서 감사합니다.

+0

덕분에 내가 그렇게하려고합니다 내가 맥 – GoCrazy

+0

그래에 ADB 전에 ./ 삽입해야 할 ... 나는 그것을 시도했지만 그렇지 말한다 : 다음은 내가 전에 그렇게하는 데 사용했습니다 코드 디렉토리 – GoCrazy

+0

데이터베이스의 정확한 경로는 Android 버전에 따라 다릅니다. 필자는 정확한 경로를 얻기 위해 DDMS에서 Eclipse 파일 시스템 브라우저를 제안합니다. Mac과 PC의 개발 환경간에 차이가 거의 없습니다. Cygwin을 PC에서 사용하는 경우 특히 그렇습니다. – Gene

답변

3

실제 장치에서는 (루트가 아닌 경우) 연결할 수 없습니다. 데이터 디렉토리는 소유 앱 이외의 다른 것에 의한 액세스로부터 보호됩니다.

장치에서 꺼내려면 데이터베이스를 액세스 할 수있는 위치 (예 : SD 카드)에 복사하기 위해 앱에 메소드를 설정해야합니다. ... 귀하의 코멘트에 대한

public void backup() { 
    try { 
     File sdcard = Environment.getExternalStorageDirectory(); 
     File outputFile = new File(sdcard, 
       "yourDB.bak"); 

     if (!outputFile.exists()) 
      outputFile.createNewFile(); 

     File data = Environment.getDataDirectory(); 
     File inputFile = new File(data, 
       "data/your.package.name/databases/yourDB"); 
     InputStream input = new FileInputStream(inputFile); 
     OutputStream output = new FileOutputStream(outputFile); 
     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = input.read(buffer)) > 0) { 
      output.write(buffer, 0, length); 
     } 
     output.flush(); 
     output.close(); 
     input.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     throw new Error("Copying Failed"); 
    } 
} 
+0

답변을 주셔서 감사합니다. 나는 이것을 시도하고 알려 드리며이 방법을 사용하여 하나의 간단한 질문을하면 데이터베이스가 in.db 형식이 될 것입니까? ... – GoCrazy

+0

예, 이름이 변경된 파일 복사본입니다. 원하는대로 확장명을 변경할 수 있습니다 (복사하기 전이나 카드에서 꺼내기 전). 여전히 데이터베이스 파일이됩니다. '.db'에 게시 한 코드에서'.bak'을 변경할 수 있습니다. 그러면 작동 할 것이고, 찾고 있던 목적을 달성 한 파일 백업을위한 코드를 사용했습니다. – Barak

+0

건배 바락 .. 그걸로 굉장한 +1 .. 예. 나는 당신의 의견을보기 전에 .db를 바꿨다. .. 고마워. – GoCrazy

관련 문제