如何区分更新和新安装

时间:2011-04-20 14:26:57

标签: android

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

将应用程序安装为新安装的人不应该看到弹出窗口。

以前版本的App无法提交任何SharedPreferences XML。

如果您不了解情况,请索取更多详情。

4 个答案:

答案 0 :(得分:1)

在启动器活动的onCreate()中,检查是否存在具有您选择名称的文件,例如“INSTALLED”。

  • 如果它不存在,则为全新安装,不显示弹出窗口并创建文件
  • 如果文件已存在,则为更新,显示弹出窗口

更安全(多活动安全)的方法是将此测试放在应用程序的onCreate()中,并将测试结果放在应用程序的静态变量中。这样,无论通过任何意图(启动器或非启动器)启动哪个活动,您都可以从应用程序对象中检索静态字段。

答案 1 :(得分:1)

我正在做这件事,我还在其中包含了一些Google Analytics事件,因此我会跟踪升级与新安装,并且可以随着时间的推移看到它们;)

// Display Recent Changes on 1st use of new version
if (!appPrefs.getAppVer().equals(getAppVerName())) {
 if (appPrefs.getAppVer().equals("")) {
         tracker.trackEvent("Application", "Install", getAppVerName(), 1);
      } else if (!appPrefs.getAppVer().equals("N/A")) {
         tracker.trackEvent("Application", "Upgrade", appPrefs.getAppVer().toString()+"->"+getAppVerName(), 1);
 }
 // display recent changes dialog
 tracker.trackPageView("/RecentChanges");
 appPrefs.saveAppVer(getAppVerName());
 appPrefs.saveAcceptedUsageAggrement(false);
}

// Display Usage Agreement on 1st use of new version
if (!appPrefs.getAcceptedUsageAggrement()) {
 tracker.trackPageView("/UsageAgreement");
 // display usage agreement dialog
 // negative button actions here
        appPrefs.saveAppVer("N/A");
 // positive button actions here
        appPrefs.saveAcceptedUsageAggrement(true);
}

我博客上的更多详情:http://www.aydabtudev.com/2011/03/google-analytics-tricks-for-android.html

答案 2 :(得分:0)

您可以通过系统注册广播。在更新应用程序时,系统发送意图ACTION_PACKAGE_REPLACED。

答案 3 :(得分:0)

创建一个侦听ACTION_PACKAGE_REPLACED Intent的BroadcastReceiver将完成这项工作。

您只需将其放入清单

即可
<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>