2016-03-04 185 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 –