感谢之前的回复,
重新安装应用程序后,是否可以从sqlite中删除存储的内容。我将数据存储在数据库中,一旦我再次重新安装相同的应用程序,以前的数据仍然存储在sqlite中。我想在重新安装应用程序时删除存储的内容。我不确定这一点。
答案 0 :(得分:1)
这看起来像是一个黑客,也许不是真正的答案,但你可以 - 在每个新版本的应用程序中 - 在代码中增加一个标识符(从10到11)然后检查包含该标识符的存储首选项标识符。如果代码中的常量高于先前设备上存储的标识符,则可以将数据库清除为您认为其状态应该是什么。然后,随着应用程序的每个新发布版本,您将增加此数字..
编辑:在API级别9及更高版本中,您可以 - 在应用启动时 - 编写应用安装的日期(有关如何查找安装日期的说明,请参阅here) 。如果您检查它是在写入日期之后安装的,请终止数据!
答案 1 :(得分:1)
感谢所有回复,
我维护所有版本的版本代码,一旦我重新安装应用程序,我检查版本,如果我发现版本更改,我只需删除数据库。这种情况仅适用于覆盖APk的安装(即无需卸载应用程序)。当我们进行卸载时,应用程序的内部数据和sqlite会自动删除。
答案 2 :(得分:0)
sqlite数据库作为文件存储在您的文件系统中,以删除数据。您只需要删除该文件。
您要做的是设置某种方式来检测应用程序是否第一次运行,如果这是第一次运行应用程序,则检查数据库是否存在,是否确实将其删除。然后将数据库重新创建为空。
或者,如果数据库存在,您可以在第一次运行时删除每个表中的所有数据/删除数据库中的每个表。
答案 3 :(得分:0)
删除应用程序时,也应删除数据库。除非你遇到麻烦才能保留它。如果您只是更新应用程序,则应保留数据。如果您需要在重新安装时删除数据,请尝试以下操作:
每次启动活动时,请致电PackageManager.getPackageInfo()
并检查lastUpdateTime
。将其与存储在数据库中的时间戳或共享首选项进行比较。如果lastUpdateTime
较新,请删除您的数据库。
答案 4 :(得分:0)
请在此处阅读:Detect Android app upgrade and set Application class boolean for show/hide of EULA
创建自己的UpgradeBroadcastReceiver,它将运行您想要的删除指令并将其注册到清单文件中。
答案 5 :(得分:0)
应用程序SharedPreferance
,因此请保存boolean
以确定应用程序是否第一次运行。