Reputation: 1
In your app’s build.gradle file:
dependencies {
implementation 'com.google.android.play:app-update:2.1.0'
}
Check for update availability
Before requesting an update, check if there is an update available for your app. Use AppUpdateManager to check for an update:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inAppUpdate();
}
Before requesting an update, check if there is an update available for your app. Use AppUpdateManager to check for an update:
//InAppUpdate==================================
public static final int RC_APP_UPDATE = 100;
private AppUpdateManager mAppUpdateManager;
private void inAppUpdate() {
mAppUpdateManager = AppUpdateManagerFactory.create(this);
mAppUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
@Override
public void onSuccess(AppUpdateInfo result) {
if (result.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
&& result.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
try {
mAppUpdateManager.startUpdateFlowForResult(result, AppUpdateType.IMMEDIATE, MainActivity.this
, RC_APP_UPDATE);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
}
});
mAppUpdateManager.registerListener(installStateUpdatedListener);
}
//in app update hare
//======================
private InstallStateUpdatedListener installStateUpdatedListener = new InstallStateUpdatedListener() {
@Override
public void onStateUpdate(InstallState state) {
if (state.installStatus() == InstallStatus.DOWNLOADED) {
showCompletedUpdate();
}
}
};
private void showCompletedUpdate() {
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "New app is ready!",
Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("Install", new View.OnClickListener() {
@Override
public void onClick(View view) {
mAppUpdateManager.completeUpdate();
}
});
snackbar.show();
}
@Override
protected void onStop() {
if (mAppUpdateManager != null)
mAppUpdateManager.unregisterListener(installStateUpdatedListener);
super.onStop();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
/* we can check without requestCode == RC_APP_UPDATE because
we known exactly there is only requestCode from startUpdateFlowForResult() */
if (requestCode == RC_APP_UPDATE && resultCode != RESULT_OK) {
Toast.makeText(this, "Cancel", Toast.LENGTH_SHORT).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onResume() {
super.onResume();
mAppUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
@Override
public void onSuccess(AppUpdateInfo result) {
if (result.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
try {
mAppUpdateManager.startUpdateFlowForResult(result, AppUpdateType.IMMEDIATE, MainActivity.this
, RC_APP_UPDATE);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
}
});
}
Upvotes: 0
Views: 124