アプリケーション データベースのコピーを作成して電話のルートに保存しようとしましたが、うまくいきません。私のログは次のとおりです。
第一歩
ステップデッド
どうやらif (sd.canWrite())
最初の間違いですか?誰でもこれを手伝ってもらえますか?私はアイデアが不足しています。ありがとう
public void save() {
File data = Environment.getDataDirectory();
File sd = new File(Environment.getExternalStorageDirectory().toString());
sd.mkdirs();
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP ONE");
if (sd.canWrite()) {
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP TWO");
String currentDBPath = "/data/com.test.example/databases/example_db";
String backupDBPath = "/mytest" + "version_two" + ".db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP THREE");
if (currentDB.exists()) {
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP FOUR");
FileChannel src;
try {
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP FIVE");
src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB)
.getChannel();
try {
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP SIX");
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
} catch (IOException e) {
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP ONE DEAD");
e.printStackTrace();
}
} catch (FileNotFoundException e) {
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP TWO DEAD");
e.printStackTrace();
}
}
}else{
Log.d("XXXXXXXXXXXXXXXXXXX", "STEP DEAD");
}
}
android:allowBackup="true"
私のマニフェストのクリップ - どうやってそこにたどり着いたのかわかりません
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
エミュレーター出力:
01-13 14:16:13.082: D/XXXXXXXXXXXXXXXXXXX(30105): STEP ONE
01-13 14:16:13.082: D/XXXXXXXXXXXXXXXXXXX(30105): STEP DEAD
デバイス出力:
01-13 14:16:13.082: D/XXXXXXXXXXXXXXXXXXX(30105): STEP ONE
01-13 14:16:13.082: D/XXXXXXXXXXXXXXXXXXX(30105): STEP TWO
01-13 14:16:13.082: D/XXXXXXXXXXXXXXXXXXX(30105): STEP THREE
01-13 14:16:13.082: D/XXXXXXXXXXXXXXXXXXX(30105): STEP FOUR
01-13 14:16:13.082: D/XXXXXXXXXXXXXXXXXXX(30105): STEP FIVE
01-13 14:16:13.090: D/XXXXXXXXXXXXXXXXXXX(30105): STEP SIX