备份、恢复android软件设置

首先声明这个问题我没有解决。留个记录待有时间再继续研究,也希望高手提示。

 

需求目标

首先备份软件设置,包括应用相关的Preference和Database数据

第二步:卸载软件,并重新安装

第三步:将第一步备份的数据恢复到新安装的应用,应用恢复到卸载前状态。

 

实现思路:

android应用安装后会在相应/data/app目录和/data/data目录创建应用相关的文件,其中Preference数据和Sqlite产生的数据分别存放在/data/data/packagename/databases和/data/data/packagename/shared_prefs目录下。备份过程就是以root身份将/data/data/packagename/目录下的文件copy到SDcard一份,到应用安装完成,重新用备份的文件覆盖新安装应用的目录文件。

 

问题:

备份、恢复过程都可以完好的实现,当运行恢复数据后的应用时,如果应用涉及到database操作,会出现如下错误:ERROR/AndroidRuntime(31206): Caused by: android.database.sqlite.SQLiteException: error code 8: attempt to write a readonly database。意思是试图去写一个只读的数据库文件。应该是权限问题所致,设置目录及文件权限,chmod 755,错误依然存在。通过观察,每个应用安装后系统对会给应用分配一个用户ID,可以通过ApplicationInfo的uid属性得到,通过root身份备份、恢复的文件,虽然设置了权限,但对应用来说依然是只读的。

 

可能的解决方案

1、通过root用户分配权限给databases

2、以应用的uid拷贝文件

3、采用Sqlite方式导入数据

 

目前测试结果第一种方式肯定是行不通的,第三种方式也有问题,应用程序刚刚安装时并不会建立database等目录,一般都是在应用第一次启动时才会建立,第二种方式目前还没有测试,希望能成功。

你可能感兴趣的:(Android)