助けていただければ幸いです。私の問題は次のとおりです。私のアプリケーションは2つのテーブルでデータベースを作成します。このデータベースをバックアップしてsdにコピーしようとしています。これはエミュレーターでは完全に正常に機能しますが、実際のデバイスではファイルはコピーされますが、SQLiteブラウザーで開くことはできません。
コピーのコードはこちら
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = getDatabasePath("fieldworker").getAbsolutePath();
Toast.makeText(getApplicationContext(), currentDBPath, 2).show();
String backupDBPath = "fieldworker";
File currentDB = new File(currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
Toast.makeText(getApplicationContext(), Long.toString(src.size()), 2).show();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
else
{
Toast.makeText(getApplicationContext(), "Doesnt exist", 2).show();
}
}
} catch (Exception e) {
}
テーブルを作成するためのコード
public DBSqlLiteHelper(Context context)
{
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(TABLE_WORKERS_CREATE);
db.execSQL(TABLE_PERSONS_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
arg0.execSQL("DROP TABLE IF EXISTS " + TABLE_PERSONS);
arg0.execSQL("DsROP TABLE IF EXISTS " + TABLE_WORKERS);
onCreate(arg0);
}
Toast.makeText(getApplicationContext(), Long.toString(src.size())
これは、ファイルが実際にコピーされることを意味するデータベースのサイズを示しています
ありがとうジム