2011-10-19 16 views
0

私はSQLiteデータベースファイルをSDカードにバックアップする例をたくさん見てきましたが、開発中のアンドロイドエミュレータでうまく動作するようになっていますが、期待通りに動作しません電話自体にここに私が理解していない奇妙な部分があります。ファイルをバックアップすると、実際には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

root権限のないデータベースファイルにはアクセスできません。それはあなたが見ている動作を説明しています。

ファイル自体をコピーする代わりに、SDカードに新しいデータベースを作成してから、古いデータベースからすべてのデータをコピーしようとします。

関連する問題