2016-07-25 68 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

答案已经提出了这个变种,不重复它 –