Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何区分更新和新安装_Android - Fatal编程技术网

Android 如何区分更新和新安装

Android 如何区分更新和新安装,android,Android,我正在为一个应用程序编写更新程序。首次启动应用程序时,将在开始处显示一个弹出窗口。但是,如果将更新作为更新安装,则会发生这种情况 无论谁将应用程序作为新安装安装,都不应看到弹出窗口 应用程序的早期版本无法提交任何SharedReferences XML 如果您不了解情况,请询问更多详细信息。您可以通过系统注册广播。更新应用程序时,系统会发送意向操作包 在启动程序活动的onCreate()中,检查是否存在您选择的名称为“INSTALLED”的文件 如果它不存在,这是一个新安装,不要显示弹出窗口并

我正在为一个应用程序编写更新程序。首次启动应用程序时,将在开始处显示一个弹出窗口。但是,如果将更新作为更新安装,则会发生这种情况

无论谁将应用程序作为新安装安装,都不应看到弹出窗口

应用程序的早期版本无法提交任何SharedReferences XML


如果您不了解情况,请询问更多详细信息。

您可以通过系统注册广播。更新应用程序时,系统会发送意向操作包

在启动程序活动的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>