2014-02-23 5 views
0

장치에 응용 프로그램을 설치했습니다. 하지만 난 내 애플 리케이션에 의해 사용되는 SDcard에 해당 데이터베이스를 복사하고 싶습니다. 이 코드를 사용하여 데이터베이스를 복사했습니다. 그러나 실패했습니다. 그리고 "su"명령이 필요합니다.다른 데이터베이스 응용 프로그램을 SDCard로 복사하는 방법

public void copydatabase() throws IOException{ 
    String [] cmd1 = { "su", "cp", "/data/data/com.apps/databases/data01.db", "/mnt/extSdCard/data01.db"}; 
    Process process = new ProcessBuilder(cmd1).start(); 
    try { 
     process.waitFor(); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

"su"명령없이 SDCard에 복사 할 수있는 코드가 있습니까 ??

+0

[사용'getDatabasePath()'(https://developer.android.com/reference/android/content/Context.html#getDatabasePath% 28java.lang.String % 29) 및 표준 Java 파일 I/O를 복사하는 것으로 가정합니다. – CommonsWare

+0

아니요, 내 친구의 앱입니다. 나는 선생님이 발전하도록 요청 받았다. 어쩌면 내가 그것을 할 getDatabasePath()를 사용할 수 없다 – JohanIDN

답변

0
public static void copyDataBase(Context mActivity) throws IOException { 
     InputStream myInput = new FileInputStream(
       new File("/data/data/" + mActivity.getPackageName() 
         + "/databases/" + "xyz.sqlite")); 
     File files = new File("/sdcard/files/"); 
     files.mkdirs(); 
     String outFileName = "/sdcard/files/xyz.sqlite"; 
     OutputStream myOutput = new FileOutputStream(outFileName); 
     byte[] buffer = new byte[1024]; 
     int bufferLength; 
     while ((bufferLength = myInput.read(buffer)) > 0) { 
      myOutput.write(buffer, 0, bufferLength); 
     } 
     myOutput.flush(); 
     myOutput.close(); 
     myInput.close(); 
    } 

나는 희망의 유용 당신에게 ...

+0

내 응용 프로그램의 데이터베이스를 복사하는 코드를 사용하고 있습니까 ?? 다른 앱 데이터베이스에서 복사 할 수 있습니까? – JohanIDN

+0

다른 앱 데이터베이스의 이름은 어떻게 알 수 있습니까? – dipali

+0

"루트 탐색기"에서 데이터베이스 이름을 알고 있습니다. 나도 알아, 내가 수동 으로이 애플 리케이션과 함께 복사 할 수 있습니다. 하지만 내 애플 리케이션 (데이터베이스를 복사 sdcard) 할 수 있습니까 ?? – JohanIDN

관련 문제