diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2023-05-08 13:08:09 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2023-05-08 13:08:09 +0200 |
commit | 33a8a51962fd53c0671128607f8bbbe9fac357ac (patch) | |
tree | 7a9528f92cdb448a1a56dcca53270f27de8a6bf3 | |
parent | 40eaa54cf025d3b4d4f75ab907602e8ecbfe05ad (diff) |
gradle: restore play runtime detection
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
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. */ |