Android 如何区分更新和新安装
我正在为一个应用程序编写更新程序。首次启动应用程序时,将在开始处显示一个弹出窗口。但是,如果将更新作为更新安装,则会发生这种情况 无论谁将应用程序作为新安装安装,都不应看到弹出窗口 应用程序的早期版本无法提交任何SharedReferences XMLAndroid 如何区分更新和新安装,android,Android,我正在为一个应用程序编写更新程序。首次启动应用程序时,将在开始处显示一个弹出窗口。但是,如果将更新作为更新安装,则会发生这种情况 无论谁将应用程序作为新安装安装,都不应看到弹出窗口 应用程序的早期版本无法提交任何SharedReferences XML 如果您不了解情况,请询问更多详细信息。您可以通过系统注册广播。更新应用程序时,系统会发送意向操作包 在启动程序活动的onCreate()中,检查是否存在您选择的名称为“INSTALLED”的文件 如果它不存在,这是一个新安装,不要显示弹出窗口并
如果您不了解情况,请询问更多详细信息。您可以通过系统注册广播。更新应用程序时,系统会发送意向操作包 在启动程序活动的onCreate()中,检查是否存在您选择的名称为“INSTALLED”的文件
- 如果它不存在,这是一个新安装,不要显示弹出窗口并创建文件
- 如果文件已经存在,这是一个更新,显示您的弹出窗口
更安全(多活动安全)的方法是将此测试放在应用程序的onCreate()中,并将测试结果放在应用程序的静态变量中。通过这种方式,无论是通过任何意图(启动器还是非启动器)启动的活动,都可以从应用程序对象检索静态字段。我正在做这件事,而且我还将一些Google Analytics事件包括在混合中,因此我跟踪升级与新安装,并可以随时间查看它们;)
更多详细信息,请访问我的博客:创建一个收听意图的广播接收器就可以了 你只要把这个放在你的舱单上
<receiver android:name=".OnUpgradeReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" android:path="your.app.package" />
</intent-filter>
</receiver>
您是说以前安装的版本没有任何共享首选项吗?如果没有,它是否创建数据库?如果它没有任何持久性数据,则可能不可能(尽管您应该添加一个共享pref来跟踪此数据,以便将来进行更新)。
<receiver android:name=".OnUpgradeReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" android:path="your.app.package" />
</intent-filter>
</receiver>