summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2023-05-08 13:08:09 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2023-05-08 13:08:09 +0200
commit33a8a51962fd53c0671128607f8bbbe9fac357ac (patch)
tree7a9528f92cdb448a1a56dcca53270f27de8a6bf3
parent40eaa54cf025d3b4d4f75ab907602e8ecbfe05ad (diff)
gradle: restore play runtime detection
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--ui/build.gradle.kts6
-rw-r--r--ui/src/googleplay/AndroidManifest.xml13
-rw-r--r--ui/src/main/java/com/wireguard/android/preference/DonatePreference.kt4
-rw-r--r--ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt3
-rw-r--r--ui/src/main/java/com/wireguard/android/updater/Updater.kt34
5 files changed, 19 insertions, 41 deletions
diff --git a/ui/build.gradle.kts b/ui/build.gradle.kts
index bc6f19d0..d5ce5997 100644
--- a/ui/build.gradle.kts
+++ b/ui/build.gradle.kts
@@ -26,7 +26,6 @@ android {
versionCode = providers.gradleProperty("wireguardVersionCode").get().toInt()
versionName = providers.gradleProperty("wireguardVersionName").get()
buildConfigField("int", "MIN_SDK_VERSION", minSdk.toString())
- buildConfigField("boolean", "IS_GOOGLE_PLAY", false.toString())
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
@@ -49,11 +48,6 @@ android {
applicationIdSuffix = ".debug"
versionNameSuffix = "-debug"
}
- create("googleplay") {
- initWith(getByName("release"))
- matchingFallbacks += "release"
- buildConfigField("boolean", "IS_GOOGLE_PLAY", true.toString())
- }
}
lint {
disable += "LongLogTag"
diff --git a/ui/src/googleplay/AndroidManifest.xml b/ui/src/googleplay/AndroidManifest.xml
deleted file mode 100644
index f1c05ed6..00000000
--- a/ui/src/googleplay/AndroidManifest.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools">
-
- <uses-permission
- android:name="android.permission.REQUEST_INSTALL_PACKAGES"
- tools:node="remove" />
- <application>
- <receiver
- android:name=".updater.Updater$AppUpdatedReceiver"
- tools:node="remove" />
- </application>
-</manifest>
diff --git a/ui/src/main/java/com/wireguard/android/preference/DonatePreference.kt b/ui/src/main/java/com/wireguard/android/preference/DonatePreference.kt
index 59980dcb..16920923 100644
--- a/ui/src/main/java/com/wireguard/android/preference/DonatePreference.kt
+++ b/ui/src/main/java/com/wireguard/android/preference/DonatePreference.kt
@@ -12,8 +12,8 @@ import android.util.AttributeSet
import android.widget.Toast
import androidx.preference.Preference
import com.google.android.material.dialog.MaterialAlertDialogBuilder
-import com.wireguard.android.BuildConfig
import com.wireguard.android.R
+import com.wireguard.android.updater.Updater
import com.wireguard.android.util.ErrorMessages
class DonatePreference(context: Context, attrs: AttributeSet?) : Preference(context, attrs) {
@@ -23,7 +23,7 @@ class DonatePreference(context: Context, attrs: AttributeSet?) : Preference(cont
override fun onClick() {
/* Google Play Store forbids links to our donation page. */
- if (BuildConfig.IS_GOOGLE_PLAY) {
+ if (Updater.installerIsGooglePlay(context)) {
MaterialAlertDialogBuilder(context)
.setTitle(R.string.donate_title)
.setMessage(R.string.donate_google_play_disappointment)
diff --git a/ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt b/ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt
index e27e1a5c..7b0c3a60 100644
--- a/ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt
+++ b/ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt
@@ -88,9 +88,6 @@ object SnackbarUpdateShower {
}
fun attachToActivity(activity: FragmentActivity, view: View, anchor: View?) {
- if (BuildConfig.IS_GOOGLE_PLAY)
- return
-
val snackbar = SwapableSnackbar(activity, view, anchor)
val context = activity.applicationContext
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 d6619217..b2f6e52f 100644
--- a/ui/src/main/java/com/wireguard/android/updater/Updater.kt
+++ b/ui/src/main/java/com/wireguard/android/updater/Updater.kt
@@ -53,6 +53,21 @@ object Updater {
private val updaterScope = CoroutineScope(Job() + Dispatchers.IO)
+ private fun installer(context: Context): String = 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) {
+ ""
+ }
+
+ fun installerIsGooglePlay(context: Context): Boolean = installer(context) == "com.android.vending"
+
sealed class Progress {
object Complete : Progress()
class Available(val version: String) : Progress() {
@@ -340,7 +355,7 @@ object Updater {
}
fun monitorForUpdates() {
- if (BuildConfig.IS_GOOGLE_PLAY)
+ if (installerIsGooglePlay(Application.get()))
return
updaterScope.launch {
@@ -382,25 +397,10 @@ object Updater {
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) {
- ""
- }
- if (installer != context.packageName)
+ if (installer(context) != context.packageName)
return
/* TODO: does not work because of restrictions placed on broadcast receivers. */