备份、恢复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等目录,一般都是在应用第一次启动时才会建立,第二种方式目前还没有测试,希望能成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值