2016-03-04 89 views
1

我的應用程序使用一個我想備份的小型SQLite數據庫。我假設這不會自動發生,沒有我使用fullBackupContent進行編碼,如下所示。如何修改backupscheme.xml的內容以正確設置包含路徑?我更喜歡在運行時設置數據庫位置。自動備份SQLite數據庫

我backupscheme.xml看起來像

<?xml version="1.0" encoding="utf-8"?> 
<full-backup-content > 
    <include domain="database" path="device_info.db"/> 
</full-backup-content 

我的清單包含:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/time_machine_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:name="mypackage.myapp" 
    android:fullBackupContent="@xml/backupscheme" 
    > 
+0

恩,如果你的數據庫被命名爲'device_info.db',它看起來像你有正確的東西來備份。 – CommonsWare

+0

嗯,這不是名稱,但我認爲我必須使用完整路徑填充路徑,例如/data/mypackage.myapp/databases/mydatabase.db –

回答

2
<include domain="database" path="device_info.db"/> 

這裏,域表示其中path解釋根目錄。 database映射到SQLite數據庫默認存儲,如果你使用:

  • getDatabasePath()Context
  • SQLiteOpenHelper只是一個普通的文件名
  • openOrCreateDatabase()只是一個普通的文件名

在這種情況下,文件名應該是您的path值。

如果您的數據庫由於某種原因存儲在其他地方,則<include>指令需要進行一些調整。

+0

這可以簡化事情。謝謝。你知道自動備份實際發生的時間/頻率?有沒有辦法強制這個問題? –

+0

@PhilO:用於測試,[按照說明](http://developer.android.com/training/backup/autosyncapi.html#testing)。在「現實世界」中,我不知道備份何時/多久發生,除非它與[文檔](http://developer.android.com/training/backup/autosyncapi)中列出的條件相關。 HTML)。 – CommonsWare

+0

正是我現在正在做的。備份似乎正常工作,但恢復失敗,無法恢復包mypackage.myapp –