aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/src/main/java/com/wireguard/android/updater/Updater.kt
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2023-05-04 16:45:01 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2023-05-04 16:45:01 +0200
commitcf4fca8086858319f1b395c9059c67b436222cbb (patch)
treeddbda52a84b59c779e8bb46f0e8c0b2a3c1d0675 /ui/src/main/java/com/wireguard/android/updater/Updater.kt
parentREADME: account for java version updates (diff)
downloadwireguard-android-cf4fca8086858319f1b395c9059c67b436222cbb.tar.xz
wireguard-android-cf4fca8086858319f1b395c9059c67b436222cbb.zip
gradle: remove runtime detection of play store
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r--ui/src/main/java/com/wireguard/android/updater/Updater.kt44
1 files changed, 29 insertions, 15 deletions
diff --git a/ui/src/main/java/com/wireguard/android/updater/Updater.kt b/ui/src/main/java/com/wireguard/android/updater/Updater.kt
index d0bd18a1..aa3256d4 100644
--- a/ui/src/main/java/com/wireguard/android/updater/Updater.kt
+++ b/ui/src/main/java/com/wireguard/android/updater/Updater.kt
@@ -17,6 +17,7 @@ import androidx.core.content.ContextCompat
import androidx.core.content.IntentCompat
import com.wireguard.android.Application
import com.wireguard.android.BuildConfig
+import com.wireguard.android.activity.MainActivity
import com.wireguard.android.util.UserKnobs
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -360,7 +361,7 @@ object Updater {
}
fun monitorForUpdates() {
- if (installerIsGooglePlay())
+ if (BuildConfig.IS_GOOGLE_PLAY)
return
updaterScope.launch {
@@ -400,21 +401,34 @@ object Updater {
}.launchIn(Application.getCoroutineScope())
}
- fun installer(): String {
- val context = Application.get().applicationContext
- return try {
- val packageName = context.packageName
- val pm = context.packageManager
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
- pm.getInstallSourceInfo(packageName).installingPackageName ?: ""
- } else {
- @Suppress("DEPRECATION")
- pm.getInstallerPackageName(packageName) ?: ""
+ class AppUpdatedReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ if (BuildConfig.IS_GOOGLE_PLAY)
+ return
+
+ if (intent.action != Intent.ACTION_MY_PACKAGE_REPLACED)
+ return
+
+ val installer = try {
+ val packageName = context.packageName
+ val pm = context.packageManager
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ pm.getInstallSourceInfo(packageName).installingPackageName ?: ""
+ } else {
+ @Suppress("DEPRECATION")
+ pm.getInstallerPackageName(packageName) ?: ""
+ }
+ } catch (_: Throwable) {
+ ""
}
- } catch (_: Throwable) {
- ""
+ if (installer != context.packageName)
+ return
+
+ /* TODO: does not work because of restrictions placed on broadcast receivers. */
+ val start = Intent(context, MainActivity::class.java)
+ start.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
+ start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ context.startActivity(start)
}
}
-
- fun installerIsGooglePlay(): Boolean = installer() == "com.android.vending"
} \ No newline at end of file