यह एक कार्यशील DB पुनर्स्थापना का मूल कोड है (if (dbfile
. से) .. try
. में )।
private static final int BUFFERSZ = 32768;
private byte[] buffer = new byte[BUFFERSZ];
........
dbfile = new File(currentdbfilename);
.......
if (dbfile.delete()) {
origdeleted = true;
}
FileInputStream bkp = new FileInputStream(backupfilename);
OutputStream restore = new FileOutputStream(currentdbfilename);
copylength = 0;
while ((copylength = bkp.read(buffer)) > 0) {
restore.write(buffer, 0, copylength);
}
restore.flush();
restore.close();
restoredone = true;
bkp.close();
मुख्य अंतर यह है कि मैं डीबी फाइल को हटा देता हूं और ट्रांसफर के बजाय राइट्स का उपयोग करता हूं। बाद में और एक सफल पुनर्स्थापना पर मैं ऐप को पुनरारंभ करने के लिए निम्नलिखित का भी उपयोग करता हूं (अधिक हो सकता है लेकिन यह मेरे लिए काम करता है) क्योंकि आप अप्रत्याशित परिणाम प्राप्त कर सकते हैं (मुझे लगता है कि मूल डेटाबेस के कुछ हिस्सों को मेमोरी/कैश्ड डेटा से एक्सेस किया जा सकता है):-
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(i);
System.exit(0);