我正在实施应用内更新功能,为此我正在使用谷歌播放核心库作为implementation 'com.google.android.play:core:1.6.1
。
此代码始终返回任何可用更新。
private void checkUpdate() {
appUpdateManager = AppUpdateManagerFactory.create(this);
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
appUpdateInfoTask.addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
@Override
public void onSuccess(AppUpdateInfo appUpdateInfo) {
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
try {
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, SplashActivity.this, 102);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
Log.e("UPDATE", "yes");
} else {
goToActivity();
Log.e("UPDATE", "no");
}
}
});
}
确保类实现InstallStateUpdatedListener
代码片段:
private var appUpdateManager: AppUpdateManager? = null
private var appUpdateInfo: AppUpdateInfo? = null
private val updateAvailable = MutableLiveData<Boolean>().apply {
value = false
}
appUpdateManager?.appUpdateInfo?.addOnSuccessListener {
if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
it.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
appUpdateInfo = it
updateAvailable.value = true
} else {
updateAvailable.value = false
}
}
appUpdateManager?.appUpdateInfo?.addOnSuccessListener { appUpdateInfo ->
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
updateAvailable.value = true
} else if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED) {
onDownloadDone()
}
}
}
updateAvailable.observe(this, Observer {
if (it) {
pAppUpdate.show()
} else {
pAppUpdate.gone()
}
})
pUpdateNowButton.setOnClickListener {
if (updateAvailable.value == true) {
appUpdateManager?.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE_FLEXI_UPDATE)
}
}