🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / Android RMOS / Otomatik uygulama güncelleme app updater How to work with Androids in app update API

1-) Android RMOS - Otomatik uygulama güncelleme app updater How to work with Androids in app update API

 

kaynak : https://stackoverflow.com/questions/55939853/how-to-work-with-androids-in-app-update-api

kaynak video : https://www.youtube.com/watch?v=Hks5_STaOSo

 

 

 

1-) build.gradle (Module)

 

implementation 'com.google.android.play:core:1.7.3'

 

2-) MainActivity.java

 

@Override
protected void onCreate(Bundle savedInstanceState) {
    
try{
        
super.onCreate(savedInstanceState);
        
binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(
binding.getRoot());
     }
catch (Exception ex){    }
    guncelle();
}

 

private AppUpdateManager mAppUpdateManager;
private static final int RC_APP_UPDATE = 11;

 

public void guncelle() {
    
try{
        
mAppUpdateManager = AppUpdateManagerFactory.create(this);
        
mAppUpdateManager.registerListener(installStateUpdatedListener);
        
mAppUpdateManager.getAppUpdateInfo().addOnSuccessListener(appUpdateInfo -> {

            
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE /*AppUpdateType.IMMEDIATE*/)){
                
try {
            
mAppUpdateManager.startUpdateFlowForResult(
              appUpdateInfo,
AppUpdateType.FLEXIBLE /*AppUpdateType.IMMEDIATE*/, MainActivity.this, RC_APP_UPDATE);

                }
catch (IntentSender.SendIntentException e) {
                    e.printStackTrace();
                }

            }
else if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED){
                
//CHECK THIS if AppUpdateType.FLEXIBLE, otherwise you can skip
                
popupSnackbarForCompleteUpdate();
            }
else {
                
Log.e("TAG", "checkForAppUpdateAvailability: something else");
            }
        });

    }
catch (Exception ex){    }}

 

@Override
protected void onStop() {
    
if (mAppUpdateManager != null) {
        
mAppUpdateManager.unregisterListener(installStateUpdatedListener);
    }
    
super.onStop();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    
super.onActivityResult(requestCode, resultCode, data);

    
if (requestCode == RC_APP_UPDATE) {
        
if (resultCode != RESULT_OK) {
            
Toast.makeText(mainActivity, "İptal Edildi", Toast.LENGTH_SHORT).show();
        }
    }
}
private void popupSnackbarForCompleteUpdate() {

    
Snackbar snackbar =
            
Snackbar.make(findViewById(android.R.id.content),
                    
"Yeni Güncelleme Hazır!",
                    
Snackbar.LENGTH_INDEFINITE);

    
snackbar.setAction("YÜKLE", view -> {
        
if (mAppUpdateManager != null){
            
mAppUpdateManager.completeUpdate();
        }
    });


    
snackbar.setActionTextColor(getResources().getColor(R.color.acik_sari));
    
snackbar.show();
}



InstallStateUpdatedListener installStateUpdatedListener = new
        
InstallStateUpdatedListener() {
            
@Override
            
public void onStateUpdate(InstallState state) {
                
if (state.installStatus() == InstallStatus.DOWNLOADED){
                    
//CHECK THIS if AppUpdateType.FLEXIBLE, otherwise you can skip
                    
popupSnackbarForCompleteUpdate();
                }
else if (state.installStatus() == InstallStatus.INSTALLED){
                    
if (mAppUpdateManager != null){
                        
mAppUpdateManager.unregisterListener(installStateUpdatedListener);
                    }

                }
else {
                    
Log.i("TAG", "InstallStateUpdatedListener: state: " + state.installStatus());
                }
            }
        };

 

 

 

 

 

 

ayrıcak kaynaklar

 

https://github.com/dnKaratzas/android-inapp-update

 

https://github.com/SanojPunchihewa/InAppUpdater

 

 

 2022 Haziran 15 Çarşamba
 350