1
1
package com.aaxena.calculator
2
2
3
3
import android.content.Context
4
- import android.content.Intent
4
+ import android.content.IntentSender.SendIntentException
5
5
import android.os.Bundle
6
6
import android.os.Handler
7
7
import android.os.Looper
@@ -11,13 +11,22 @@ import android.widget.Toast
11
11
import android.widget.Toast.LENGTH_SHORT
12
12
import androidx.appcompat.app.AlertDialog
13
13
import 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
14
21
import kotlinx.android.synthetic.main.activity_main.*
15
22
import net.objecthunter.exp4j.ExpressionBuilder
16
23
17
24
18
25
class MainActivity : AppCompatActivity () {
19
26
val SHARED_PREFS = " sharedPrefs"
20
27
val TEXT = " text"
28
+ private var mAppUpdateManager: AppUpdateManager ? = null
29
+ private val RC_APP_UPDATE = 11
21
30
override fun onCreate (savedInstanceState : Bundle ? ) {
22
31
super .onCreate(savedInstanceState)
23
32
setContentView(R .layout.activity_main)
@@ -178,4 +187,31 @@ class MainActivity : AppCompatActivity() {
178
187
}
179
188
return ! ranBefore
180
189
}
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
+ }
181
217
}
0 commit comments