我正在尝试为我用 java 编写的 android 应用程序实现应用程序内更新对话框。
为检查是否有可用更新而截取的代码取自android 开发者页面。它在 Main 活动的 onResume() 方法中调用。
private void checkForUpdate() {
AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(this);
// Returns an intent object that you use to check for an update.
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
// Checks that the platform will allow the specified type of update.
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
Log.d(TAG, "AppUpdateInfo: " + appUpdateInfo);
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
// can be changed to AppUpdateType.INTERMEDIATE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
// Request the update.
try {
appUpdateManager.startUpdateFlowForResult(
// Pass the intent that is returned by 'getAppUpdateInfo()'.
appUpdateInfo,
// Or 'AppUpdateType.FLEXIBLE' for flexible updates.
AppUpdateType.IMMEDIATE,
// The current activity making the update request.
this,
// Include a request code to later monitor this update request.
APP_UPDATE_REQUEST_CODE);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
});
}
我通过 Google Play Console 发布新的应用程序版本。有两个封闭的测试轨道:
- 开发跟踪 -> 用户:开发人员,当前版本:105
- 测试人员跟踪 -> 用户:测试人员,当前版本:99
将 AppUpdateInfo 打印到开发者设备的 Logcat 中时,availableVersionCode 为 88。同时当前版本(105)出现在 Google Play Store 中。
D/MainActivity:AppUpdateInfo:AppUpdateInfo{packageName=package.app,availableVersionCode=88,updateAvailability=1,installStatus=0,clientVersionStalenessDays=null,updatePriority=0,bytesDownloaded=0,totalBytesToDownload=0,additionalSpaceRequired=0,assetPackStorageSize=0, immediateUpdateIntent=null,flexibleUpdateIntent=null,immediateDestructiveUpdateIntent=null,flexibleDestructiveUpdateIntent=null}
过去有一个版本 88,因为版本增加了 1,但目前只有版本 105 和 99 处于活动状态。
现在我想知道为什么 AppUpdateInfo 没有收到最新版本 105。如前所述,更新是通过 Google Play 控制台进行的。我的猜测是,应用内更新功能仅接收通过Google Play Developer API提交的更新信息。
有没有人遇到过同样的问题并且可以证实我的猜测?任何帮助是极大的赞赏。