【发布时间】:2013-03-04 10:06:30
【问题描述】:
我正在使用database 存储一些data。但是当用户转到Apps Settings 并在应用程序设置中按下'clear data' 按钮时,数据库中的数据被删除如何避免这种情况。我可以在应用程序设置中为我的应用程序设置'clear data' BUTTON 为未启用或任何其他建议....
【问题讨论】:
标签: java android database sqlite
我正在使用database 存储一些data。但是当用户转到Apps Settings 并在应用程序设置中按下'clear data' 按钮时,数据库中的数据被删除如何避免这种情况。我可以在应用程序设置中为我的应用程序设置'clear data' BUTTON 为未启用或任何其他建议....
【问题讨论】:
标签: java android database sqlite
添加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。
【讨论】:
没有直接的方法可以避免任何应用程序数据从我所知道的情况中被清除。
但是,您可以将数据存储在某个文件中的外部存储(SD 卡)中,并在每次应用启动时检查该文件是否存在并将其内容合并到数据库中。如果用户手动从 SD 中删除您的备份文件、插入另一个 SD、移除 SD 或将设备作为已安装的驱动器连接到计算机然后启动应用程序,这当然不起作用。
【讨论】:
Android 不会询问您的应用喜欢的数据是否要删除。它是提供给用户的系统功能。用户有权完全卸载应用程序。
所以,在另一个位置创建/打开数据库文件。
数据持久性:
【讨论】:
我认为有一种方法,但还没有尝试过。您可以将数据库文件存储在资产文件夹中,检查它是否可用,否则就这样做https://stackoverflow.com/a/9109728/265167(注意 DataBaseHelper 类)。但是这样做,你会丢失所有的“更新数据”。
【讨论】:
终于找到了解决办法,如果你是应用系统管理员,那么就无法清除数据和卸载应用了
【讨论】: