所以这是我第一次为我的应用发送更新,而且我不知道通过google-play更新应用时会发生什么事情,
以下是一些我无法回答的问题:
实际更新了什么以及此过程如何工作,即更新完成后的方法或回调?
共享首选项文件会发生什么,名称值对更改/重置?
假设我想从服务器下载一些文件,当应用程序通过google play 更新时,并在后台对该文件执行一些数据库操作。我怎样才能以正确的方式解决这个问题。
- 编辑 -
为了让它更清晰,我希望在用户更新应用程序时自动进行一些处理,并且他不打算打开应用程序并实现此目的我正在寻找触发器谷歌通过任何意图[隐式或明确]提供给我的应用程序。
答案 0 :(得分:6)
您需要实现一个广播接收器,当Paackage被替换时会收到通知:
在你的清单中包括:
<receiver android:name="my.package.MyReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<data android:scheme="package" />
</intent-filter>
</receiver>
课程MyReceiver
需要延长android.content.BroadcastReceiver
回答第二个问题:SharedPreferences不受Google Play更新的影响,因为不是应用数据文件夹中的文件。
答案 1 :(得分:1)
检查是否已安装新版本的一种方法是使用共享首选项。打开应用程序时,您可以检查该版本的条目是否存在。如果不是,则安装新版本。处理完成后,您可以将当前版本号保存在共享首选项中。
至于您的第二个问题,更新过程不会丢失或重置共享首选项。他们保持原样。
答案 2 :(得分:0)
你可能在这里运气不好,因为没有干净的方法来使用已安装的应用程序。如果您有应用内结算(这是猜测)并且Google的应用内结算系统有一个动态信息中心或API来注册用户,那么,您可以说设置某种新的唯一密钥并通过以下方式跟踪它:应用程序结算系统。但这可能是不可能的。
您可以做的第二件事是查找服务器数据库中的用户并创建您为所有用户提及的文件,并将其保存在服务器缓存中(以便快速访问)。然后在您的应用程序首次启动此新版本时,您可以快速将此文件提供给用户。这似乎是一个很好的安全解决方案。
祝你好运,这是一个有趣的问题,我期待着听到你将如何解决这个问题。
记住,您还可以查看推送通知并将此数据推送给用户。但是,这假设您的应用具有此功能。
答案 3 :(得分:0)
@prateek用户需要从Android 3.1手动启动应用程序以应用广播接收器解决方案。我认为你没有任何选择......对不起伙伴......一个小小的建议就是,当你真的想用某种用户交互或广播接收器来触发频繁操作而没有用户交互时,尝试放置推送通知处理程序...干杯!
答案 4 :(得分:0)
你可以这样接近
在用户首次安装并启动应用程序时,您应将当前版本存储为共享首选项中的last_vertion_of_app。然后使用警报管理器+广播接收器+服务来检查具有共享偏好存储版本的清单应用程序版本,如果两者不同(不相等),则意味着发生某些更新。如果即使没有应用程序启动,如果在保存服务中更新= true,那么你可以做你想要发生的事情。