我使用InAppUpdater library进行Android In App Update。
为了进行测试,我使用versionCode 3
创建了一个简单的应用程序(在此之前,我在内部测试轨道中发布了versionCode 2
,但我的应用程序中没有使用versionCode 1
进行更新)并上传了它在Google播放的封闭轨道(alpha版)中播放。在Android设备上,我安装了versionCode 2
。
代码:
public class UpdateActivity extends AppCompatActivity {
private UpdateManager mUpdateManager;
static final int REQUEST_CODE = 781;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
TextView txtCurrentVersion = findViewById(R.id.currentVersion);
TextView txtAvailableVersion = findViewById(R.id.availableVersion);
txtCurrentVersion.setText(String.valueOf(BuildConfig.VERSION_CODE));
// Initialize the Update Manager with the Activity and the Update Mode
mUpdateManager = UpdateManager.Builder(this);
// Callback from Available version code
mUpdateManager.getAvailableVersionCode(code -> txtAvailableVersion.setText(String.valueOf(code)));
}
@Override
protected void onResume() {
super.onResume();
// Continue updates when resumed
mUpdateManager.continueUpdate();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Log.d("MyTag", "Result ok! Result code: " + resultCode);
}
else if(resultCode == RESULT_CANCELED){
Log.d("MyTag", "Result canceled! Result code: " + resultCode);
}
else if(resultCode == ActivityResult.RESULT_IN_APP_UPDATE_FAILED){
Log.d("MyTag", "In app update failed! Result code: " + resultCode);
}
}
}
public void tryToUpdate(View view){
mUpdateManager.mode(UpdateManagerConstant.FLEXIBLE).start();
}
}
启动后,我看到当前版本= 2,可用版本= 3,因此应用程序会看到更新。接下来,我单击tryToUpdate
按钮,然后看到更新对话框,单击“更新”,等待,请参阅“刚刚下载了更新”,单击“重新启动”,请参阅安装活动,此后,我的应用程序重新启动,我看到了旧版本-当前版本= 2,这就是问题所在。当然,我尝试手动关闭并打开该应用程序,但仍然看到旧版本。但是,如果我删除旧版本并从Google Play手动安装新版本,则一切正常。
那么,我该如何解决呢?