Я написал код для резервного копирования моего sqlite db
на file
на моем телефоне Android (Sony Ericsson X-8 с версией 2.1.1 Android).
Я привел код ниже для справки, но прежде чем читать его, я подчеркиваю, что он отлично работает на X-8. [Любые предложения по улучшению по-прежнему приветствуются!] Когда я запускаю его на Sony Ericsson Xperia Arc с версией 4.0.4 Android, у меня возникают проблемы.
Файл не записан в папку SD card
. Это очень сложно отладить, потому что, как вы, возможно, знаете, подключение телефона к компьютеру через USB-карту может остановить запись файла в любом случае (см., Например: Android FileWriter не работает на Sony Ericsson Arc, но работает на другом телефоне).
В любом случае просмотр кода в отладчике не приводит к проблемам, и создается впечатление, что файл записан. В моем manifest
у меня есть:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Я в тупике относительно того, что происходит. Что-то изменилось между версиями 2 и 4 Android в отношении файловой системы? Это конкретно для телефона?
Любые идеи будут высоко оценены. -Дэйв
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();
}
sd.getAbsolutePath()
передif( !sd.exists() )
? - person 323go   schedule 01.03.2013/mnt/sdcard
) в оболочке adb? Тогда попробуйте mkdir оттуда? - person 323go   schedule 01.03.2013./adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED ...
- person 323go   schedule 02.03.2013