java - 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
解决方案
推荐阅读
- azure-aks - 如何使用 DNS 在 azure aks 上公开 nginx-ingress
- javascript - 多行显示字符串
- rhel - 使用无根 podman 暴露端口
- python - 如何使用 python 连接到 AMAZON SP_API 端点?
- java - 如何从对流中创建集合映射?
- vb.net - 如何更改 OpenXML word 文档 (vb.net) 中的字体大小?
- flutter - 是否可以使用具有可扩展小部件的 flutter_markdown 自定义构建器?
- facebook - 如何不发送任何查询参数 facebook 像素
- wso2 - Wso2:无法更改 user-mgt.xml
- angular - 授权码授予(WSO2 API Manager 3.2.0)