java - 如何在应用程序更新中实现 "IMMEDIATE"?

标签 java android in-app-update

我已经在 Google Play 商店中启动了应用程序,对于该应用程序,我需要实现立即应用程序更新,以解决已经在使用我的应用程序的问题

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

  2. 在 Android 开发者网站中,我也经历过,但没有得到正确的示例

最佳答案

尝试以下方法进行应用内更新,以立即更新 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();
}

考特西 here

关于java - 如何在应用程序更新中实现 "IMMEDIATE"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56560910/

相关文章:

java - mysql中日期特定格式

仅选择一列时Android房间类型转换器不转换

android - 我们可以为内部应用共享设置更新优先级(在应用更新中测试)吗?

android - 内部应用更新 : clientVersionStalenessDays() returning null when testing with internal app sharing

android - 如何在应用更新中为 android 配置灵活或立即发布?

java - 如何以一秒为间隔显示 Swing 计时器的剩余时间?

java - 将字符串中的正则表达式模式替换为取决于匹配的替换字符串

javascript - 是否可以从粘贴在文本区域的 html 页面中找到此类标签​​,并将其标签替换为 javascript 代码中提到的其他标签?

java - 如何从 Android 调用 javascript?

android - WebView 中的高度问题