我database
用来存储一些data
. 但是当用户转到Apps Setting
s 并按下'clear data'
应用程序设置中的按钮时,数据库中的数据被删除如何避免这种情况。我可以'clear data'
在应用程序设置中将我的应用程序的按钮设置为未启用或任何其他建议....
5 回答
添加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 活动时,它会完成该活动。
没有直接的方法可以避免从我所知道的任何应用程序数据中清除。
但是,您可以将数据存储在某个文件中的外部存储(SD 卡)中,并在每次应用启动时检查该文件是否存在并将其内容合并到数据库中。如果用户手动从 SD 中删除您的备份文件、插入另一个 SD、移除 SD 或将设备作为已安装的驱动器连接到计算机然后启动应用程序,这当然不起作用。
Android 不会询问您的 App 是否要删除其数据。它是提供给用户的系统功能。用户有权完全卸载该应用程序。
因此,在另一个位置创建/打开数据库文件。
数据持久性:
- 应用缓存目录:内存不足时删除。
- 应用数据目录:当用户清除应用数据时删除,应用被卸载。
- 外部存储:用户可以随时删除,用户也可以删除存储。
- 备份管理器:新版本的 android 提供应用程序通过 BackupManager 在云上备份数据。
- 远程服务器:保留在服务器中直到被删除。
我认为有一种方法,但还没有尝试过。您可以将数据库文件存储在资产文件夹中,检查它是否可用,否则就像这样https://stackoverflow.com/a/9109728/265167(注意 DataBaseHelper 类)。但是这样做,您将丢失所有“更新数据”。
最后我找到了一些解决方案,如果您让应用程序系统管理员,则无法清除数据和卸载应用程序