【问题标题】:Avoid deleting the data from database on clicking 'clear data' button in the app settings on android device避免在 android 设备上的应用程序设置中单击“清除数据”按钮从数据库中删除数据
【发布时间】:2013-03-04 10:06:30
【问题描述】:

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

【问题讨论】:

标签: java android database sqlite


【解决方案1】:

添加android:manageSpaceActivity=".ActivityOfMyChoice" 到您的清单的应用程序标签,例如:

<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 活动时,它会结束 Activity。

【讨论】:

    【解决方案2】:

    没有直接的方法可以避免任何应用程序数据从我所知道的情况中被清除。

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

    【讨论】:

      【解决方案3】:

      Android 不会询问您的应用喜欢的数据是否要删除。它是提供给用户的系统功能。用户有权完全卸载应用程序。

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

      数据持久性:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          终于找到了解决办法,如果你是应用系统管理员,那么就无法清除数据和卸载应用了

          【讨论】:

          • 如何做应用系统管理员?设置要以编程方式做什么?
          猜你喜欢
          • 2018-06-08
          • 1970-01-01
          • 2021-12-01
          • 1970-01-01
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-09
          相关资源
          最近更新 更多