首页 > 解决方案 > Google 应用内更新功能无法正常工作,更新失败

问题描述

我最近根据文档 https://developer.android.com/guide/playcore/in-app-updates在我的应用程序中实现了应用程序更新功能

但是大多数应用程序没有得到更新并跳到登录活动。仅供参考 inappupdate 通过内部应用测试工作正常

我已经尝试清除应用程序和 Playstore 的数据;重启手机;仍然没有更新

//finishedprep() 下一个活动的意图

    void continueUpdateProcess(){
appUpdateManager = AppUpdateManagerFactory.create(getApplicationContext());



        installStateUpdatedListener = state -> {
            if (state.installStatus() == InstallStatus.DOWNLOADED) {
                Log.d("UPDATE_AVAILABILITY", " Update Downloaded");

                popupSnackBarForCompleteUpdate();
            } else if (state.installStatus() == InstallStatus.INSTALLED) {
                Log.d("UPDATE_AVAILABILITY", " Update Installed");

                removeInstallStateUpdateListener();
            } else {
                Log.d("UPDATE_AVAILABILITY", "InstallStateUpdatedListener: state: " + state.installStatus());
//                Toast.makeText(getApplicationContext(), "InstallStateUpdatedListener: state: " + state.installStatus(), Toast.LENGTH_LONG).show();
            }
        };

        appUpdateManager.registerListener(installStateUpdatedListener);


        Task<AppUpdateInfo> appUpdateInfoTask;
        appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

//        if (appUpdateInfoTask.)

//        if (appUpdateInfoTask.isSuccessful()){
        Log.d("UPDATE_AVAILABILITY", "Update check initialized ");



        appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
            Log.d("UPDATE_AVAILABILITY", "Update check started ");

            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                        && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                    Log.d("UPDATE_AVAILABILITY", "FLEXIBLE Update available");
                    startUpdateFlow(appUpdateInfo,true);
                }
                else if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                        && appUpdateInfo.updatePriority() >= 4
                        && appUpdateInfo.isUpdateTypeAllowed(IMMEDIATE)) {
                    Log.d("UPDATE_AVAILABILITY", "IMMEDIATE Update available");
                    startUpdateFlow(appUpdateInfo,false);
                }
                else if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED) {
                    popupSnackBarForCompleteUpdate();
                    Log.d("UPDATE_AVAILABILITY", " Update Downloaded");
                }
//                else if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_NOT_AVAILABLE){
//                    Log.d("UPDATE_AVAILABILITY "+Constant.BANK, "UPDATE_NOT_AVAILABLE");
//                    finishedPrep();
//                }
                else {
                    finishedPrep();
                    Log.d("UPDATE_AVAILABILITY "+Constant.BANK, "No updates");
                }
            });
        Log.d("UPDATE_AVAILABILITY", " No update skipped update");

        appUpdateInfoTask.addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(Exception e) {
                Log.d("UPDATE_AVAILABILITY", "Update failure");
                finishedPrep();
            }
        });

 @Override
    protected void onResume() {
        super.onResume();
        Log.d("UPDATE_AVAILABILITY","RESUMING ");


        if (appUpdateManager!=null) {
            try {
                appUpdateManager.getAppUpdateInfo()
                        .addOnSuccessListener(appUpdateInfoTask -> {
                            if (appUpdateInfoTask.installStatus() == InstallStatus.DOWNLOADING) {
                                Toast.makeText(getApplicationContext(), "App update in progress. Please wait.", Toast.LENGTH_LONG).show();
                            } else if (appUpdateInfoTask.installStatus() == InstallStatus.DOWNLOADED) {
                                popupSnackBarForCompleteUpdate();
                            } else
                                 if (appUpdateInfoTask.updateAvailability()
                                    == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
                                // If an in-app update is already running, resume the update.
                                try {
                                    appUpdateManager.startUpdateFlowForResult(
                                            appUpdateInfoTask,
                                            IMMEDIATE,
                                            this,
                                            FLEXIBLE_APP_UPDATE_REQ_CODE);
                                } catch (IntentSender.SendIntentException e) {
                                    e.printStackTrace();
                                }
                            }
                            else if (appUpdateInfoTask.updateAvailability()==UpdateAvailability.UPDATE_NOT_AVAILABLE){
//                                finishedPrep();
                                Log.d("UPDATE_AVAILABILITY",Constant.BANK+"No updates");
                            }

                        });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }




 @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==FLEXIBLE_APP_UPDATE_REQ_CODE){
            if (resultCode==RESULT_OK){
                Log.d("UPDATE_AVAILABILITY","APP UPDATE SUCCESSFUL!! RESULT CODE:"+resultCode);
            }
            else if (resultCode==RESULT_CANCELED){
                finishedPrep();
                Log.d("UPDATE_AVAILABILITY","APP UPDATE DENIED BY USER!! RESULT CODE:"+resultCode);
            }
            else {
                showInAppFailedDialog();
               Log.d("UPDATE_AVAILABILITY","APP UPDATE ERROR!! RESULT CODE:"+resultCode);
            }
        }
    }

这是我的日志,当更新已经在 Playstore 上可用时

2021-05-25 16:22:30.578 12341-12341/? D/UPDATE_AVAILABILITY: RESUMING 
2021-05-25 16:22:31.001 12341-12341/? D/UPDATE_AVAILABILITY: Update check initialized 
2021-05-25 16:22:31.002 12341-12341/? D/UPDATE_AVAILABILITY:  No update skipped update
2021-05-25 16:22:32.071 12341-12341/? D/UPDATE_AVAILABILITY: Update check started 
2021-05-25 16:22:32.092 12341-12341/? D/UPDATE_AVAILABILITY application_name: No updates
2021-05-25 16:22:33.288 12341-12341/? D/UPDATE_AVAILABILITY: UPDATE STOPPED

标签: javaandroid

解决方案


推荐阅读