Androidフォン(Sony Ericsson X-8 with Androidのバージョン2.1.1) にバックアップするコードを作成しましたsqlite db
。file
参考までに以下にコードを載せておきますが、読む前にX-8でも問題なく動作することを強調しておきます。[改善のための提案は大歓迎です!] Android のバージョン 4.0.4 を搭載した Sony Ericsson Xperia Arc で実行すると、問題が発生します。
ファイルはに書き込まれませんSD card
。ご存知かもしれませんが、USB カードを介して電話をコンピューターに接続すると、ファイルの書き込みが停止する可能性があるため、デバッグが非常に困難です (例: Android FileWriter が Sony Ericsson Arc では動作しないが、別の電話では動作する を参照)。
いずれにせよ、デバッガーでコードを調べても問題はなく、ファイルが書き込まれたと信じ込まされます。私manifest
の には、次のものがあります。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
私は何が起こっているのか困惑しています。ファイル システムに関して、Android のバージョン 2 と 4 の間で何か変更がありましたか? 電話特有のものですか?
どんなアイデアでも大歓迎です。-デイブ
String packageName = "com.xxx.receiver";
String dbName = "Receiver";
//File sd = Environment.getExternalStorageDirectory();
File sd = new File(Environment.getExternalStorageDirectory(), "xxx"); // "xxx" is never created on Arc!
if (!sd.exists()) {
sd.mkdirs();
}
File data = Environment.getDataDirectory();
if (sd.canWrite())
{
String currentDBPath = "//data//"+ packageName +"//databases//"+ dbName;
String backupDBPath = dbName;
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
//Toast.makeText(SettingsAdapter.this.getContext(), backupDB.toString(), Toast.LENGTH_LONG).show();
}