From 670046315516266f80c01d65c5dbc85c12e47bc2 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Mon, 22 Nov 2021 11:44:55 +0100 Subject: [PATCH] Remove getBilling from app class --- .../com/emanuelef/remote_capture/Billing.java | 6 +++++- .../com/emanuelef/remote_capture/PCAPdroid.java | 17 ++++++++++------- .../activities/SettingsActivity.java | 4 +--- .../emanuelef/remote_capture/model/Prefs.java | 3 +-- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/emanuelef/remote_capture/Billing.java b/app/src/main/java/com/emanuelef/remote_capture/Billing.java index bfc2f939..e4cac476 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/Billing.java +++ b/app/src/main/java/com/emanuelef/remote_capture/Billing.java @@ -36,10 +36,14 @@ public class Billing { protected final Context mContext; - public Billing(Context ctx) { + protected Billing(Context ctx) { mContext = ctx; } + public static Billing newInstance(Context ctx) { + return new Billing(ctx); + } + public boolean isAvailable(String sku) { return false; } diff --git a/app/src/main/java/com/emanuelef/remote_capture/PCAPdroid.java b/app/src/main/java/com/emanuelef/remote_capture/PCAPdroid.java index d7a5c0f8..2985b971 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/PCAPdroid.java +++ b/app/src/main/java/com/emanuelef/remote_capture/PCAPdroid.java @@ -23,6 +23,7 @@ import android.app.Application; import android.content.Context; import android.content.SharedPreferences; +import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import com.emanuelef.remote_capture.activities.ErrorActivity; @@ -35,8 +36,14 @@ import java.lang.ref.WeakReference; import cat.ereza.customactivityoncrash.config.CaocConfig; -// IMPORTANT: do not override getResources() with mLocalizedContext, otherwise the Webview used for ads will crash! -// https://stackoverflow.com/questions/56496714/android-webview-causing-runtimeexception-at-webviewdelegate-getpackageid +/* The PCAPdroid app class. + * This class is instantiated before anything else, and its reference is stored in the mInstance. + * Global state is stored into this class via singletons. Contrary to static singletons, this does + * not require passing the localized Context to the singletons getters methods. + * + * IMPORTANT: do not override getResources() with mLocalizedContext, otherwise the Webview used for ads will crash! + * https://stackoverflow.com/questions/56496714/android-webview-causing-runtimeexception-at-webviewdelegate-getpackageid + */ public class PCAPdroid extends Application { private MatchList mVisMask; private MatchList mMalwareWhitelist; @@ -71,14 +78,10 @@ public class PCAPdroid extends Application { Utils.setAppTheme(theme); } - public static PCAPdroid getInstance() { + public static @NonNull PCAPdroid getInstance() { return mInstance.get(); } - public Billing getBilling(Context ctx) { - return new Billing(ctx); - } - public MatchList getVisualizationMask() { if(mVisMask == null) mVisMask = new MatchList(mLocalizedContext, Prefs.PREF_VISUALIZATION_MASK); diff --git a/app/src/main/java/com/emanuelef/remote_capture/activities/SettingsActivity.java b/app/src/main/java/com/emanuelef/remote_capture/activities/SettingsActivity.java index e2ceb96b..c3595a3a 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/activities/SettingsActivity.java +++ b/app/src/main/java/com/emanuelef/remote_capture/activities/SettingsActivity.java @@ -35,9 +35,7 @@ import androidx.preference.PreferenceManager; import androidx.preference.SwitchPreference; import com.emanuelef.remote_capture.Billing; -import com.emanuelef.remote_capture.PCAPdroid; import com.emanuelef.remote_capture.Utils; -import com.emanuelef.remote_capture.model.ListInfo; import com.emanuelef.remote_capture.model.Prefs; import com.emanuelef.remote_capture.R; @@ -90,7 +88,7 @@ public class SettingsActivity extends BaseActivity { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.root_preferences, rootKey); - mIab = PCAPdroid.getInstance().getBilling(requireContext()); + mIab = Billing.newInstance(requireContext()); setupUdpExporterPrefs(); setupHttpServerPrefs(); diff --git a/app/src/main/java/com/emanuelef/remote_capture/model/Prefs.java b/app/src/main/java/com/emanuelef/remote_capture/model/Prefs.java index 41c7c49d..e03e7be7 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/model/Prefs.java +++ b/app/src/main/java/com/emanuelef/remote_capture/model/Prefs.java @@ -23,7 +23,6 @@ import android.content.Context; import android.content.SharedPreferences; import com.emanuelef.remote_capture.Billing; -import com.emanuelef.remote_capture.PCAPdroid; import com.emanuelef.remote_capture.Utils; public class Prefs { @@ -84,7 +83,7 @@ public class Prefs { public static boolean isPcapdroidTrailerEnabled(SharedPreferences p) { return(p.getBoolean(PREF_PCAPDROID_TRAILER, false)); } public static String getCaptureInterface(SharedPreferences p) { return(p.getString(PREF_CAPTURE_INTERFACE, "@inet")); } public static boolean isMalwareDetectionEnabled(Context ctx, SharedPreferences p) { - return(PCAPdroid.getInstance().getBilling(ctx).isPurchased(Billing.MALWARE_DETECTION_SKU) + return(Billing.newInstance(ctx).isPurchased(Billing.MALWARE_DETECTION_SKU) && p.getBoolean(PREF_MALWARE_DETECTION, false)); } public static boolean startAtBoot(SharedPreferences p) { return(p.getBoolean(PREF_START_AT_BOOT, false)); }