エミュレータを使用してSQLiteデータベースをデータフォルダからSDCardにコピーしようとしています。ここで見つけた以下のコードを使用しています。
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "\\data\\PackageName\\databases\\myDB.db";
String backupDBPath = "myDB.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists())
{
// code to copy from currentDB to backupDB
}
}
} catch (Exception e) {
}
以下の書き込み許可もマニフェストファイルに追加されます。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
問題:
問題は、「currentDB.exists()」がFALSEを返すことです。
「currentDB.getAbsolutePath()」は、「data \ data \ PackageName \ databases\myDB.db」であるパスを返します。
これはデータベースの正しい場所です。Eclipse>>DDMSパースペクティブ>>ファイルエクスプローラーを使用してデータベースを見つけることができるからです。
「currentDB.exists()」がFALSEを返す理由を誰かが見つけるのを手伝ってもらえますか?
貴重な時間とご協力に感謝します。