我正在创建多个应用,每个应用都有相同的包,所以如果我安装一个,那么它应该覆盖另一个,即其中一个应用只能安装在手机中。这可能听起来很奇怪,但这是应用程序需要的方式。我已准备好所有应用程序,但我有这个问题,我想在每次安装时删除数据库表,所以如果我安装第二个应用程序,它会覆盖第一个但数据库不会被删除。我无法更改VersionCode,因为我无法使用旧版本覆盖,因此所有应用程序都具有相同的包和相同的版本代码。
基本上它应该在应用程序的每次首次运行时都要求输入密码,然后我创建一个表并将其存储在那里,以便对该用户进行身份验证,因此对于每个新应用程序,这必须再次完成,但在更新时,表仍然存在那导致没有提示密码。现在我如何从数据库中检测和删除表。即使我使用共享偏好而不是数据库,它们仍保留在更新中,我甚至无法检测应用程序是否因版本代码相同而更新。
如果有人能给我一个解决方案或提示,我将非常感激。
谢谢,
Hamza Manzoor
答案 0 :(得分:3)
您可以在SharedPreferences中存储应用程序的单独版本值,并根据列表或数值检查其中的值,并根据结果进行决定。 您也可以使用Android的内置版本(不是nummrical值,而是字符串值)。
如果您使用SharedPreferences解决方案,则可以使用一种算法来获取版本值。假设一个应用程序编号为“A”,另一个应用程序编号为“B”,另一个应用程序编号为“C”。然后你将应用程序的真实版本附加到那个,即“A1.0”或“B2.4”,......(你明白了)。这样Android就不知道当前正在安装什么应用程序。
每当你启动一个应用程序时,只需检查第一个值。如果这与您知道的应用程序的正常值不同,则它已被替换。否则,请检查版本值,看看是否需要更新数据库。
//我可以添加: 当然这可能是bug的来源,但是如果你小心这应该可行。如果有人有更好的解决方案,请发帖。
答案 1 :(得分:1)
如果您的应用具有相同的版本代码,则不会通过Google Play机制覆盖\升级。只有通过" adb install -rd"或者一些支持root的侧载器。
恕我直言,正确的行动方式是