2011-10-19 5 views
0

SDite 데이터베이스 파일을 백업하는 예를 많이 보았으며 개발 과정에서 안드로이드 에뮬레이터에서 성공적으로 작동하도록했습니다. 그러나 예상대로 작동하지 않습니다. 전화 자체. 여기에 내가 이해하지 못하는 이상한 부분이 있습니다. 파일을 백업하면 실제로 SD 카드에 파일이 생성되지만 응용 프로그램에서 사용하는 SQLite 데이터베이스에있는 모든 데이터가 백업 된 파일에 포함되지는 않습니다. 다른 사람이이 문제에 부딪 혔습니까? 아래 파일을 백업하는 데 사용하는 코드입니다. DB_PATH 상수는/data/data/[패키지 이름]/databases/값을 포함합니다. 어떤 도움이라도 대단히 감사하겠습니다.SQLite 데이터베이스 파일을 SD 카드에 백업

try 
{ 
       File dbFile = new File(DataBaseHelper.DB_PATH 
         + DataBaseHelper.DB_NAME); 

       File exportDir = new File(Environment.getExternalStorageDirectory() 
         + DB_BACKUP_PATH); 

       if (!exportDir.exists()) { 
        exportDir.mkdirs(); 
       } 

       File file = new File(exportDir, dbFile.getName()); 

       file.createNewFile(); 
       FileUtil.copyFile(dbFile, file); 
       return true; 
      } catch (IOException e) { 
       BusinessLogic.errorHandler(e, ManageDataActivity.this); 
       return false; 
      } 
      catch(Exception e) { 
       BusinessLogic.errorHandler(e, ManageDataActivity.this); 
       return false; 
      } 

답변

0

루트 권한없이 데이터베이스 파일에 액세스 할 수 없습니다. 그것은 당신이보고있는 행동을 설명합니다.

파일 자체를 복사하는 대신 SD 카드에 새 데이터베이스를 만든 다음 이전 데이터베이스의 모든 데이터를 복사 해 봅니다.

관련 문제