2016-07-25 66 views
0

只有當應用程序直接從Google Play進行更新(或自動)時,是否有辦法在代碼中執行某些操作?如何找出應用程序已更新

我的任務就是在安裝後或每次更新

+0

您可以通過更換接收器包做到這一點。這裏有一個[示例](http://stackoverflow.com/questions/4513825/how-to-correctly-filter-package-replaced-broadcast) –

回答

3

您可以使用android.intent.action.PACKAGE_REPLACED接收器時,您的應用程序更新檢測。 根據DOC:

廣播事件:一個應用程序包的新版本已經安裝 ,更換現有的版本是以前安裝 。數據包含軟件包的名稱。

AndroidMenifest.xml: 註冊一個接收器與android.intent.action.PACKAGE_REPLACED行動。

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

AppUpdateReceiver.java: 創建廣播接收器,當你的應用程序進行更新,將觸發。檢查您的版本代碼並執行具體操作。

public class AppUpdateReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     switch (BuildConfig.VERSION_CODE){ 
      case 1: 
       //DO something if the version code is 1. 
       break; 
      case 2: 
       //DO something if the version code is 2. 
       break; 
      ... 
      ... 
     } 
    } 
} 
+0

這看起來不錯,但passsy建議(在我看來)更簡單的解決方案。你的方式有什麼優勢? –

+0

您不必檢查應用程序版本,並檢查每次更新的應用程序。系統會在您的應用更新時調用您的應用。 –

+0

是的,聽起來不錯,謝謝! –

1

簡單的檢查,如果BuildConfig.VERSION_CODE改變後詢問用戶隱私警察的一些術語。 爲此,請將版本代碼保存在SharedPreferences中。 Application#onCreate()可能是一個很好的觀點。

+0

對不起,您的解決方案是好的,簡單,但Keval Patel的方式看起來更正確的。我投了你的問題,但我接受了Keval –

0

您可以簡單地更新,並且當用戶將啓動應用程序下一次應該顯示(顯示上推出的用戶策略)的代碼。也許保留一個偏好值,以確保它只發生一次。

或者,你也可以閱讀每個推出的最新版本的代碼,並保持其存儲的偏好,一旦被更新,就可以顯示出政策並更新存儲的值。

0

存放在sharedpreference的BuildConfig.VERSION_CODE。每次用戶打開應用程序時,獲取版本代碼並與存儲的數據進行比較。

+0

答案已經提出了這個變種,不重複它 –