【问题标题】:InAppUpdate not work proper ,the download process are done successful but app not installInAppUpdate 无法正常工作,下载过程已成功完成但应用程序未安装
【发布时间】:2020-01-27 09:34:38
【问题描述】:

我在我的应用上实现了Google in-app update, 我已经在我的其他应用程序中添加了它的正常工作并且它也更新了我的应用程序。 但是在我的新应用程序中,我将其添加到与最旧的 apk 相同的位置,它遵循所有过程并下载但不更新应用程序。如果有人实现了正确的应用程序内更新代码,请分享和帮助。

谁能告诉我?它的谷歌方面的错误?

我已经为它尝试了应用内更新参考的所有链接和网站。

提前致谢。

【问题讨论】:

  • 你添加InstallStateUpdatedListener吗?
  • 是的,我也让它正确并且它在我的一个应用程序上工作,但在其他应用程序中它不起作用,总是得到安装失败的状态
  • 在我的情况下它工作正常
  • 我在我的其他 4-5 应用程序上实现了相同的代码,但它不起作用并且只能运行一个应用程序。
  • 等我分享我的代码。

标签: java android in-app-update


【解决方案1】:

请尝试以下代码

private AppUpdateManager appUpdateManager;
private Task<AppUpdateInfo> appUpdateInfoTask;

/*--------- Check if update available ----------*/
appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
appUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
    @Override
    public void onSuccess(AppUpdateInfo result) {
        if (result.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
                result.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
            Snackbar snackbar = Snackbar
                .make(coordinatorLayout, "Update Available", Snackbar.LENGTH_LONG)
                .setAction("Update", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        try {
                            appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.FLEXIBLE, MainActivity.this, REQUEST_CODE_FLEXIBLE_UPDATE);
                        } catch (IntentSender.SendIntentException e) {
                            Log.e(TAG, "requestUpdate :: " + e.getMessage());
                            e.printStackTrace();
                        }
                    }
                });
            snackbar.show();
        }
    }
});

@Override
protected void onResume() {
    appUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
        @Override
        public void onSuccess(AppUpdateInfo result) {
            if (result.installStatus() == InstallStatus.DOWNLOADED) {
                notifyUser();
            }
        }
    });
    super.onResume();
}

@Override
protected void onDestroy() {
    appUpdateManager.unregisterListener(MainActivity.this);
    super.onDestroy();
}

@Override
public void onStateUpdate(InstallState installState) {
    if (installState.installStatus() == InstallStatus.DOWNLOADED) {
        notifyUser();
    }
}

private void notifyUser() {
    Snackbar snackbar = Snackbar
        .make(coordinatorLayout, "Updated Successfully", Snackbar.LENGTH_LONG)
        .setAction("Install", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                appUpdateManager.completeUpdate();
                appUpdateManager.unregisterListener(MainActivity.this);
            }
        });
    snackbar.show();
}

希望对你有帮助!

谢谢。

【讨论】:

  • 是的,我的代码和你的一样但是不行,谢谢你的建议 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
相关资源
最近更新 更多