diff --git a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt index 243fef472..ceab2a2e2 100644 --- a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt +++ b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt @@ -1160,6 +1160,13 @@ class AmneziaActivity : QtActivity() { @Suppress("unused") fun isPlay(): Boolean = BuildConfig.FLAVOR == "play" + @Suppress("unused") + fun isTestPurchaseEnvironment(): Boolean { + if (BuildConfig.DEBUG) return true + val appInfo = packageManager.getApplicationInfo(packageName, 0) + return (appInfo.flags and android.content.pm.ApplicationInfo.FLAG_DEBUGGABLE) != 0 + } + @Suppress("unused") fun getCountryCode(): String { Log.v(TAG, "Get country code") diff --git a/client/platforms/android/android_controller.cpp b/client/platforms/android/android_controller.cpp index 44f5f89c1..8c4603b92 100644 --- a/client/platforms/android/android_controller.cpp +++ b/client/platforms/android/android_controller.cpp @@ -332,7 +332,11 @@ void AndroidController::sendTouch(float x, float y) bool AndroidController::isPlay() { return callActivityMethod("isPlay", "()Z"); +} +bool AndroidController::isTestPurchaseEnvironment() +{ + return callActivityMethod("isTestPurchaseEnvironment", "()Z"); } QJsonObject AndroidController::getSubscriptionPlans() diff --git a/client/platforms/android/android_controller.h b/client/platforms/android/android_controller.h index 918d6bd31..98f51bcd3 100644 --- a/client/platforms/android/android_controller.h +++ b/client/platforms/android/android_controller.h @@ -56,6 +56,7 @@ public: bool requestAuthentication(); void sendTouch(float x, float y); bool isPlay(); + bool isTestPurchaseEnvironment(); QJsonObject getSubscriptionPlans(); QJsonObject purchaseSubscription(const QString &offerToken); QJsonObject upgradeSubscription(const QString &offerToken, const QString &oldPurchaseToken);