2011-04-20 60 views
0

我在爲應用程序編寫更新。首次啓動應用程序時,彈出窗口會顯示在開始處。但是,如果更新作爲更新安裝,則會發生。如何區分更新和新安裝

將應用程序安裝爲新安裝的用戶不應該看到彈出窗口。

以前版本的應用程序無法提交任何SharedPreferences XML。

如果您不瞭解情況,請詢問更多詳情。

+0

你是說,以前安裝的版本沒有任何共享偏好?如果不是,它會創建一個數據庫嗎?如果它沒有任何持久數據,它可能是不可能的(儘管你應該添加一個共享的pref來跟蹤這個未來的更新)。 – slund 2011-04-20 14:40:53

回答

1

我做的是非常的事情,我還包含在混合一些谷歌分析事件,所以我跟蹤的升級與新的安裝,並可以看到他們一段時間;)

// 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

0

您可以通過系統註冊廣播。在更新應用時,系統發送意圖ACTION_PACKAGE_REPLACED。

1

在啓動器活動的onCreate()中,檢查是否存在具有所選名稱的文件,例如「INSTALLED」。

  • ,如果它不存在,這是一個新的安裝,不顯示彈出式窗口,創建該文件,如果文件已經存在
  • ,這是一個更新,顯示您的彈出

更安全的(多活動安全)方法是將此測試放在應用程序的onCreate()中,並將測試結果放置在應用程序的靜態變量中。這樣,無論哪種活動通過任何意圖(啓動器或不啓動)啓動,都可以從應用程序對象中檢索靜態字段。

0

創建一個偵聽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>