避免在Android设备上的应用程序设置中单击“清除数据”按钮从数据库中删除数据

时间:2013-03-04 10:06:31

标签: java android database sqlite

我正在使用database来存储一些data。但是,当用户转到Apps Setting并按应用设置中的'clear data'按钮时,数据库中的数据会被删除,以避免这种情况。我是否可以在应用设置中将'clear data'按钮设置为未启用或任何其他建议....

5 个答案:

答案 0 :(得分:4)

添加android:manageSpaceActivity=".ActivityOfMyChoice" 到你的Manifest的应用程序标签:

<application android:label="MyApp" android:icon="@drawable/icon" android:manageSpaceActivity=".ActivityOfMyChoice" >

然后,有一个“管理空间”按钮,而不是“清除数据”,它启动ActivityOfMyChoice

ActivityOfMyChoice.java

public class ActivityOfMyChoice extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    finish();
}

因此,当我们点击Mange活动时,它会完成活动。

答案 1 :(得分:3)

没有直接的方法可以避免从我所知道的内容中删除任何应用数据。

但是,您可以将数据存储在某个文件中的外部存储(SD卡)上,并在每个应用程序启动时检查该文件是否存在并将其内容合并到数据库中。如果用户从SD手动删除备份文件,插入另一个SD,删除SD或将设备作为已安装的驱动器连接到计算机,然后启动应用程序,这当然不起作用。

答案 2 :(得分:3)

Android不会询问您的应用程序是否要删除其数据。这是为用户提供的系统功能。用户可以完全卸载App。

因此,在另一个位置创建/打开数据库文件。

数据持久性:

  1. App cache dir:内存不足时删除。
  2. 应用数据目录:当用户清除应用数据时删除,应用已卸载。
  3. 外部存储:用户可以随时删除,用户也可以删除存储。
  4. 备份管理器:Android的新版本提供了通过BackupManager在云上备份数据的应用程序。
  5. 远程服务器:保留在服务器中直到删除。

答案 3 :(得分:1)

我认为有一种方法,但尚未尝试过。您可以将您的数据库文件存储在资产文件夹中,检查它是否可用,否则只需执行此操作https://stackoverflow.com/a/9109728/265167(注意DataBaseHelper类)。但这样做,你将失去所有“更新数据”。

答案 4 :(得分:0)

最后我找到了一些解决方案,如果您使应用程序系统管理员,则无法清除数据并卸载应用程序