MainActivity.java
package raj.sujeet.com.historycalendar;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentSender;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.play.core.appupdate.AppUpdateInfo;
import com.google.android.play.core.appupdate.AppUpdateManager;
import com.google.android.play.core.appupdate.AppUpdateManagerFactory;
import com.google.android.play.core.install.InstallState;
import com.google.android.play.core.install.InstallStateUpdatedListener;
import com.google.android.play.core.install.model.ActivityResult;
import com.google.android.play.core.install.model.AppUpdateType;
import com.google.android.play.core.install.model.InstallStatus;
import com.google.android.play.core.install.model.UpdateAvailability;
import com.google.android.play.core.tasks.OnSuccessListener;
import com.google.android.play.core.tasks.Task;
public class MainActivity extends AppCompatActivity {
private AppUpdateManager appUpdateManager;
private static final int MY_REQUEST_CODE = 17326;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkUpdate();
}
private void checkUpdate() {
InstallStateUpdatedListener listener = new InstallStateUpdatedListener() {
@Override
public void onStateUpdate(InstallState installState) {
if (installState.installStatus() == InstallStatus.DOWNLOADED) {
Log.d("InstallDownloded", "InstallStatus sucsses");
notifyUser();
}
}
};
appUpdateManager = AppUpdateManagerFactory.create(this);
appUpdateManager.registerListener(listener);
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
appUpdateInfoTask.addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
@Override
public void onSuccess(AppUpdateInfo appUpdateInfo) {
String data = "packageName :" + appUpdateInfo.packageName() + ", " +
"availableVersionCode :" + appUpdateInfo.availableVersionCode() + ", " +
"updateAvailability :" + appUpdateInfo.updateAvailability() + ", " +
"installStatus :" + appUpdateInfo.installStatus()+ ", ";
Log.e("appUpdateInfo :", ""+data);
Toast.makeText(MainActivity.this, ""+data, Toast.LENGTH_LONG).show();
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
requestUpdate(appUpdateInfo);
Log.d("UpdateAvailable", "update is there ");
} else if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
Log.d("Update", "3");
notifyUser();
} else {
Toast.makeText(MainActivity.this, "No Update Available", Toast.LENGTH_SHORT).show();
Log.e("NoUpdateAvailable", "update is not there ");
}
}
});
}
private void requestUpdate(AppUpdateInfo appUpdateInfo) {
try {
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, MainActivity.this, MY_REQUEST_CODE);
resume();
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == MY_REQUEST_CODE) {
switch (resultCode) {
case Activity.RESULT_OK:
if (resultCode != RESULT_OK) {
Toast.makeText(this, "RESULT_OK" + resultCode, Toast.LENGTH_LONG).show();
Log.d("RESULT_OK :", "" + resultCode);
}
break;
case Activity.RESULT_CANCELED:
if (resultCode != RESULT_CANCELED) {
Toast.makeText(this, "RESULT_CANCELED" + resultCode, Toast.LENGTH_LONG).show();
Log.d("RESULT_CANCELED :", "" + resultCode);
}
break;
case ActivityResult.RESULT_IN_APP_UPDATE_FAILED:
/*if (resultCode != RESULT_IN_APP_UPDATE_FAILED){
Toast.makeText(this,"RESULT_IN_APP_UPDATE_FAILED" +resultCode, Toast.LENGTH_LONG).show();
Log.d("RESULT_IN_APP_FAILED:",""+resultCode);
}*/
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
try {
appUpdateManager.unregisterListener((InstallStateUpdatedListener) this);
}catch (RuntimeException e){
}
}
private void notifyUser() {
Snackbar snackbar =
Snackbar.make(findViewById(R.id.root),
"An update has just been downloaded.",
Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("RESTART", new View.OnClickListener() {
@Override
public void onClick(View view) {
appUpdateManager.completeUpdate();
}
});
snackbar.setActionTextColor(
getResources().getColor(R.color.colorAccent));
snackbar.show();
}
private void resume() {
appUpdateManager.getAppUpdateInfo().addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
@Override
public void onSuccess(AppUpdateInfo appUpdateInfo) {
if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED) {
notifyUser();
}
}
});
}
}
No comments:
Post a Comment