我在爲應用程序編寫更新。首次啓動應用程序時,彈出窗口會顯示在開始處。但是,如果更新作爲更新安裝,則會發生。如何區分更新和新安裝
將應用程序安裝爲新安裝的用戶不應該看到彈出窗口。
以前版本的應用程序無法提交任何SharedPreferences XML。
如果您不瞭解情況,請詢問更多詳情。
我在爲應用程序編寫更新。首次啓動應用程序時,彈出窗口會顯示在開始處。但是,如果更新作爲更新安裝,則會發生。如何區分更新和新安裝
將應用程序安裝爲新安裝的用戶不應該看到彈出窗口。
以前版本的應用程序無法提交任何SharedPreferences XML。
如果您不瞭解情況,請詢問更多詳情。
我做的是非常的事情,我還包含在混合一些谷歌分析事件,所以我跟蹤的升級與新的安裝,並可以看到他們一段時間;)
// 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
您可以通過系統註冊廣播。在更新應用時,系統發送意圖ACTION_PACKAGE_REPLACED。
在啓動器活動的onCreate()中,檢查是否存在具有所選名稱的文件,例如「INSTALLED」。
更安全的(多活動安全)方法是將此測試放在應用程序的onCreate()中,並將測試結果放置在應用程序的靜態變量中。這樣,無論哪種活動通過任何意圖(啓動器或不啓動)啓動,都可以從應用程序對象中檢索靜態字段。
創建一個偵聽ACTION_PACKAGE_REPLACED意圖的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>
你是說,以前安裝的版本沒有任何共享偏好?如果不是,它會創建一個數據庫嗎?如果它沒有任何持久數據,它可能是不可能的(儘管你應該添加一個共享的pref來跟蹤這個未來的更新)。 – slund 2011-04-20 14:40:53