2

我已经在 google play store 中启动了应用程序,对于该应用程序,我需要实施即时应用程序更新,以解决已经在使用我的应用程序的问题

  1. 我已经尝试过 Github 示例,这些示例是灵活更新而不是即时更新。

  2. 在android开发者网站上我也经历过我没有得到正确的例子

4

2 回答 2

6

尝试以下方法进行应用内更新以立即更新 android 应用。

在应用程序构建 gradle 文件中添加以下行。

implementation 'com.google.android.play:core:1.6.3'

为了更好的方法,将此单一方法代码放在您的 MainActivity 中并在 onCreate() 方法中调用。

  AppUpdateManager appUpdateManager;

    private void inAppUpdate() {
    // Creates instance of the manager.
    appUpdateManager = AppUpdateManagerFactory.create(this);

    // Returns an intent object that you use to check for an update.
    Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

   // Checks that the platform will allow the specified type of update.
    appUpdateInfoTask.addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
        @Override
        public void onSuccess(AppUpdateInfo appUpdateInfo) {

            Log.e("AVAILABLE_VERSION_CODE", appUpdateInfo.availableVersionCode()+"");
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    // For a flexible update, use AppUpdateType.FLEXIBLE
                    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                // Request the update.

                try {
                    appUpdateManager.startUpdateFlowForResult(
                            // Pass the intent that is returned by 'getAppUpdateInfo()'.
                            appUpdateInfo,
                            // Or 'AppUpdateType.FLEXIBLE' for flexible updates.
                            AppUpdateType.IMMEDIATE,
                            // The current activity making the update request.
                            HomeActivity.this,
                            // Include a request code to later monitor this update request.
                            UPDATE_REQUEST_CODE);
                } catch (IntentSender.SendIntentException ignored) {

                }
            }
        }
    });

    appUpdateManager.registerListener(installStateUpdatedListener);

}
       //lambda operation used for below listener    
    InstallStateUpdatedListener installStateUpdatedListener = installState -> {
             if (installState.installStatus() == InstallStatus.DOWNLOADED) {
                 popupSnackbarForCompleteUpdate();
             } else
              Log.e("UPDATE", "Not downloaded yet");
         };


    private void popupSnackbarForCompleteUpdate() {

    Snackbar snackbar =
            Snackbar.make(
                    findViewById(android.R.id.content),
                    "Update almost finished!",
                    Snackbar.LENGTH_INDEFINITE);
       //lambda operation used for below action
    snackbar.setAction(this.getString(R.string.restart), view -> 
               appUpdateManager.completeUpdate());
    snackbar.setActionTextColor(getResources().getColor(R.color.your_color));
    snackbar.show();
}

礼貌在这里

于 2019-07-05T10:05:45.637 回答
1

我们在我们的应用程序中使用以下场景进行强制更新。

我们在后端数据库中维护当前版本代码和最新版本代码。

  • 在启动画面中,我正在调用该 API 来检查最新版本代码。
  • 从APP获取当前版本代码。
  • 从 API 获取最新版本代码。
  • 如果最新版本代码是增量的,则为当前版本。我们显示更新对话框。
  • 您必须确保,一旦新的更新推出,您需要更改后端数据库中的版本。
于 2019-06-12T11:22:18.043 回答