在即时模式下下载APK后,Android In App Update未安装APK

时间:2019-10-25 06:56:18

标签: android google-play google-play-core

应用程序正在使用即时模式来更新应用程序。它开始下载APK,但是下载APK之后,它再也不会安装。 UI挂起,显示下载进度100%。在即时模式下,没有反馈表明下载已完成。

如何在即时模式下自动实现应用的下载,安装和重启?

我正在使用以下模式以即时模式开始更新。

        try {
            appUpdateManager.startUpdateFlowForResult(
                    appUpdateInfo,
                    AppUpdateType.IMMEDIATE,
                    getActivity(),
                    REQUEST_CODE_FOR_APP_UPDATE);
        } catch (IntentSender.SendIntentException e) {
            appUpdateFailed();
        }

2 个答案:

答案 0 :(得分:2)

尝试使用onActivityResult(),您可以检查日志状态以了解更新所发生的情况及其状态代码。 或者,您始终可以使用弹性更新,而不是立即更新。有关更多信息,请参见此link

答案 1 :(得分:0)

如果仍然有人遇到此问题,可以向AppUpdateManager中添加一个侦听器,然后以编程方式重新启动活动。

他们承诺即时模式会在in app update support处处理应用程序重启,但事实并非如此。

立即:全屏用户体验,要求用户更新并重新启动应用程序才能继续使用该应用程序。此UX最适合更新对于继续使用该应用至关重要的情况。用户接受即时更新后,Google Play会处理更新安装并重新启动应用程序。

这里是一个例子,

InstallStateUpdatedListener installStateUpdatedListener = new
        InstallStateUpdatedListener() {
            @Override
            public void onStateUpdate(InstallState state) {
                if (state.installStatus() == InstallStatus.DOWNLOADED){
                    Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                    finish();
                } else if (state.installStatus() == InstallStatus.INSTALLED){
                    if (appUpdateManager != null){
                        appUpdateManager.unregisterListener(installStateUpdatedListener);
                    }

                }
            }
        };

此代码仅监视更新状态,下载完成后,它将创建一个新的基本意图并完成当前意图。这样就称为“ OnResume”。

将此监听器注册到AppUpdateManager:

appUpdateManager.registerListener(installStateUpdatedListener);

P.S .:我不擅长回答SO问题,但很乐意分享我的解决方法。