11package com.aaxena.calculator
22
33import android.content.Context
4- import android.content.Intent
4+ import android.content.IntentSender.SendIntentException
55import android.os.Bundle
66import android.os.Handler
77import android.os.Looper
@@ -11,13 +11,22 @@ import android.widget.Toast
1111import android.widget.Toast.LENGTH_SHORT
1212import androidx.appcompat.app.AlertDialog
1313import androidx.appcompat.app.AppCompatActivity
14+ import com.google.android.play.core.appupdate.AppUpdateManager
15+ import com.google.android.play.core.appupdate.AppUpdateManagerFactory
16+ import com.google.android.play.core.install.InstallState
17+ import com.google.android.play.core.install.InstallStateUpdatedListener
18+ import com.google.android.play.core.install.model.AppUpdateType
19+ import com.google.android.play.core.install.model.InstallStatus
20+ import com.google.android.play.core.install.model.UpdateAvailability
1421import kotlinx.android.synthetic.main.activity_main.*
1522import net.objecthunter.exp4j.ExpressionBuilder
1623
1724
1825class MainActivity : AppCompatActivity () {
1926 val SHARED_PREFS = " sharedPrefs"
2027 val TEXT = " text"
28+ private var mAppUpdateManager: AppUpdateManager ? = null
29+ private val RC_APP_UPDATE = 11
2130 override fun onCreate (savedInstanceState : Bundle ? ) {
2231 super .onCreate(savedInstanceState)
2332 setContentView(R .layout.activity_main)
@@ -178,4 +187,31 @@ class MainActivity : AppCompatActivity() {
178187 }
179188 return ! ranBefore
180189 }
190+ override fun onStart () {
191+ super .onStart()
192+ mAppUpdateManager = AppUpdateManagerFactory .create(this )
193+ mAppUpdateManager!! .registerListener(installStateUpdatedListener)
194+ mAppUpdateManager!! .getAppUpdateInfo().addOnSuccessListener { appUpdateInfo ->
195+ if (appUpdateInfo.updateAvailability() == = UpdateAvailability .UPDATE_AVAILABLE
196+ && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType .FLEXIBLE /* AppUpdateType.IMMEDIATE*/ )) {
197+ try {
198+ mAppUpdateManager!! .startUpdateFlowForResult(
199+ appUpdateInfo, AppUpdateType .FLEXIBLE /* AppUpdateType.IMMEDIATE*/ , this , RC_APP_UPDATE )
200+ } catch (e: SendIntentException ) {
201+ e.printStackTrace()
202+ }
203+ } else {
204+ }
205+ }
206+ }
207+
208+ var installStateUpdatedListener: InstallStateUpdatedListener = object : InstallStateUpdatedListener {
209+ override fun onStateUpdate (state : InstallState ) {
210+ if (state.installStatus() == = InstallStatus .INSTALLED ) {
211+ mAppUpdateManager?.unregisterListener(this )
212+ } else {
213+ // App Is Fully Updated Nothing To Do, Continuing Normal WorkFlow but do not erase the else func
214+ }
215+ }
216+ }
181217}
0 commit comments