Я сомневаюсь, что это является причиной вашей проблемы, но следующие две строки:
OutputStream output = new FileOutputStream("/sdcard/android/package/databases/mydatabase.db");
InputStream input = new FileInputStream("/data/data/package/databases/database");
следует преобразовать в:
File sdcard = Environment.getExternalStorageDirectory();
File outputFile = new File(sdcard, "android/package/databases/mydatabase.
File data = Environment.getDataDirectory();
File inputFile = new File(data, "data/package/databases/database");
InputStream input = new FileInputStream(inputFile);
OutputStream output = new FileOutputStream(outputFile);
Это потому, что каталоги sdcard и data могут находиться в разных местах на разных телефонах. И часто вам нужно сделать /mnt/sdcard/
для ссылки на SD-карту, но лучше всего использовать Files и использовать Environment
, как я показал выше.
Вам, конечно, нужно поместить все это в блок try, как у вас уже есть, а затем в рамках catch вам нужно будет поставить e.printStackTrace();
, а затем, если выдается ошибка, вы можете посмотреть ошибки logcat, чтобы определить, где ваш код дает сбой, вместо использования журнала каждые несколько строк.
И, в вашем Манифесте вы должны иметь следующее разрешение:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />