diff --git a/app/src/main/java/com/aurora/store/data/activity/InstallActivity.kt b/app/src/main/java/com/aurora/store/data/activity/InstallActivity.kt index 860670491..3a4b9ee3e 100644 --- a/app/src/main/java/com/aurora/store/data/activity/InstallActivity.kt +++ b/app/src/main/java/com/aurora/store/data/activity/InstallActivity.kt @@ -1,6 +1,6 @@ package com.aurora.store.data.activity -import android.content.pm.PackageInstaller +import android.content.pm.PackageInstaller.SessionCallback import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity @@ -16,6 +16,7 @@ class InstallActivity : AppCompatActivity() { private val TAG = InstallActivity::class.java.simpleName private lateinit var sessionInstaller: SessionInstaller + private lateinit var sessionCallback: SessionCallback override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -24,7 +25,7 @@ class InstallActivity : AppCompatActivity() { IntentCompat.getParcelableExtra(intent, Constants.PARCEL_DOWNLOAD, Download::class.java) if (download != null) { - val callback = object : PackageInstaller.SessionCallback() { + sessionCallback = object : SessionCallback() { override fun onCreated(sessionId: Int) {} override fun onBadgingChanged(sessionId: Int) {} @@ -40,11 +41,19 @@ class InstallActivity : AppCompatActivity() { } } } - packageManager.packageInstaller.registerSessionCallback(callback) + packageManager.packageInstaller.registerSessionCallback(sessionCallback) install(download) + } else { + Log.e(TAG, "InstallActivity triggered without a valid download, bailing out!") + finish() } } + override fun onDestroy() { + packageManager.packageInstaller.unregisterSessionCallback(sessionCallback) + super.onDestroy() + } + private fun install(download: Download) { sessionInstaller = SessionInstaller(this) try {