当前位置: 首页 > 知识库问答 >
问题:

无法使用Play Core库提供的支持应用程序内更新来更新应用程序

席俊达
2023-03-14

我只是尝试在google play核心库API提供的应用程序更新服务中实现。

在发布了较新版本的应用程序后进行了内部测试。我在play store中获得了更新版本的应用程序,如图1所示。但是,我无法看到“更新”按钮在同一页上,正如屏幕上的-2。另外,应用程序是禁用的,以更新根据代码的实现。请帮我处理这件事。谢谢。屏幕肖像1屏幕肖像2

`

private AppUpdateManager appUpdateManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    appUpdateManager = AppUpdateManagerFactory.create(this);
    InAppUpdate.setImmediateUpdate(appUpdateManager, this);
}

@Override
protected void onResume() {
    super.onResume();
    InAppUpdate.setImmediateUpdateOnResume(appUpdateManager, this);
}
}

public class InAppUpdate {

public static int REQUEST_APP_UPDATE = 302;

public static void setImmediateUpdate(AppUpdateManager appUpdateManager, Activity activity) {

    appUpdateManager
            .getAppUpdateInfo()
            .addOnSuccessListener(
                    appUpdateInfo -> {

                        // Checks that the platform will allow the specified type of update.
                        if ((appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE)
                                && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                            // Request the update.
                            try {
                                appUpdateManager.startUpdateFlowForResult(
                                        appUpdateInfo,
                                        AppUpdateType.IMMEDIATE,
                                        activity,
                                        REQUEST_APP_UPDATE);
                            } catch (IntentSender.SendIntentException e) {
                                e.printStackTrace();
                            }
                        }
                    });
}

public static void setImmediateUpdateOnResume(AppUpdateManager appUpdateManager, Activity activity) {

    appUpdateManager
            .getAppUpdateInfo()
            .addOnSuccessListener(
                    appUpdateInfo -> {

                        if (appUpdateInfo.updateAvailability()
                                == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
                            // If an in-app update is already running, resume the update.
                            try {
                                appUpdateManager.startUpdateFlowForResult(
                                        appUpdateInfo,
                                        AppUpdateType.IMMEDIATE,
                                        activity,
                                        REQUEST_APP_UPDATE);
                            } catch (IntentSender.SendIntentException e) {
                                e.printStackTrace();
                            }
                        }
                    });
}

public static void setFlexibleUpdate(AppUpdateManager appUpdateManager, Activity activity) {

    InstallStateUpdatedListener installStateUpdatedListener = installState -> {
        if (installState.installStatus() == InstallStatus.DOWNLOADED) {
            Snackbar snackbar =
                    Snackbar.make(
                            activity.findViewById(android.R.id.content),
                            activity.getString(R.string.in_app_snack_bar_message),
                            Snackbar.LENGTH_INDEFINITE);
            //lambda operation used for below action
            snackbar.setAction(activity.getString(R.string.in_app_snack_bar_action_title), view ->
                    appUpdateManager.completeUpdate());
            snackbar.setActionTextColor(activity.getResources().getColor(R.color.in_app_snack_bar_text_color))
            ;
            snackbar.show();
        } else
            Log.e("UPDATE", "Not downloaded yet");
    };

    appUpdateManager
            .getAppUpdateInfo()
            .addOnSuccessListener(
                    appUpdateInfo -> {

                        // Checks that the platform will allow the specified type of update.
                        if ((appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE)
                                && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                            // Request the update.
                            try {
                                appUpdateManager.startUpdateFlowForResult(
                                        appUpdateInfo,
                                        AppUpdateType.FLEXIBLE,
                                        activity,
                                        REQUEST_APP_UPDATE);
                            } catch (IntentSender.SendIntentException e) {
                                e.printStackTrace();
                            }
                        }
                    });

    appUpdateManager.registerListener(installStateUpdatedListener);
}

public static void setFlexibleUpdateOnResume(AppUpdateManager appUpdateManager, Activity activity) {

    appUpdateManager
            .getAppUpdateInfo()
            .addOnSuccessListener(
                    appUpdateInfo -> {

                        if (appUpdateInfo.updateAvailability()
                                == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
                            // If an in-app update is already running, resume the update.
                            try {
                                appUpdateManager.startUpdateFlowForResult(
                                        appUpdateInfo,
                                        AppUpdateType.FLEXIBLE,
                                        activity,
                                        REQUEST_APP_UPDATE);
                            } catch (IntentSender.SendIntentException e) {
                                e.printStackTrace();
                            }
                        }
                    });
}

}`

共有1个答案

刘建中
2023-03-14

请确保设备中安装的app是比推送发布的app更低的版本。

 类似资料:
  • 有多种方法可以更新Electron应用. 最简单并且获得官方支持的方法是利用内置的Squirrel框架和Electron的autoUpdater模块。 Updating Applications There are several ways to update an Electron application. The easiest and officially supported one is

  • 有多种方法可以更新Electron应用. 最简单并且获得官方支持的方法是利用内置的Squirrel框架和Electron的autoUpdater模块。 使用 update.electronjs.org Electron 团队维护 update.electronjs.org,一个免费开源的网络服务,可以让 Electron 应用使用自动更新。 这个服务是设计给那些满足以下标准的 Electron 应

  • 我们有一个应用程序,利用在应用程序计费。我们看到的问题如下: 当使用较高版本代码的构建被上传到Play Developer控制台时,In App Billing将停止在设备上的应用程序(使用较低版本代码)上工作,表示“应用程序未配置为计费”。 这很好,在测试的时候,但问题是--当应用程序在Google Play商店中时,会有什么行为?当您替换应用程序(以执行更新)时,处于野生状态(具有较低版本代码

  • 我已经构建了一个Kafka Streams应用程序。这是我的第一个,所以我正在从概念验证的思维模式转变为“我如何将其产品化?”心态。 tl; dr版本:我正在寻找kafka流部署建议和技巧,特别是与更新应用程序代码相关的建议和技巧。 我已经找到了很多关于Kafka和Streams API如何工作的文档,但是我找不到任何关于实际部署Streams应用程序的文档。 初始部署似乎相当简单-有很好的文档可

  • 了解如何在收到有可用的新版本通知后更新 Creative Cloud 应用程序。 更新 Creative Cloud 应用程序 Adobe Creative Cloud 桌面应用程序会通知您已安装的应用程序之一是否有可用的更新。更新应用程序以便直接访问新增功能、性能改进以及错误修复。操作方法如下。 注意:有关更新应用程序至 Adobe Creative Cloud 2017 版本的详细信息,请参阅

  • 如果1要更新应用程序,请从控制台执行操作。。1.单击部署。2.选择应用程序名称并单击更新选项。3、在这里,他可以改变: 现在在我的应用程序中没有指定计划路径,所以要更新应用程序,我只更改源路径。应用程序已成功更新。 我想通过提供新的源路径,使用wlst命令更新应用程序。有可能吗? 喜欢 updateApplication('backoffice','path\ to\ the\ ear\ file