From 0dceee6244269f056aa576b27922918d4c259031 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 24 Mar 2021 17:31:55 +0100 Subject: [PATCH] Enable detectNonSdkApiUsage in debug version --- .../java/eu/faircode/email/ApplicationEx.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index 1712381164..45a8b8f231 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -29,6 +29,8 @@ import android.content.res.Configuration; import android.os.Build; import android.os.Handler; import android.os.Looper; +import android.os.StrictMode; +import android.os.strictmode.Violation; import android.util.Printer; import android.webkit.CookieManager; @@ -93,6 +95,34 @@ public class ApplicationEx extends Application } }); + if (BuildConfig.DEBUG && + Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + StrictMode.VmPolicy policy = new StrictMode.VmPolicy.Builder(StrictMode.getVmPolicy()) + .detectNonSdkApiUsage() + .penaltyListener(getMainExecutor(), new StrictMode.OnVmViolationListener() { + @Override + public void onVmViolation(Violation v) { + String message = v.getMessage(); + if (message != null && + (message.contains("computeFitSystemWindows") || + message.contains("makeOptionalFitsSystemWindows"))) + return; + + StackTraceElement[] stack = v.getStackTrace(); + for (StackTraceElement ste : stack) { + String clazz = ste.getClassName(); + if (clazz != null && + clazz.startsWith("com.android.webview.chromium")) + return; + } + + Log.e(v); + } + }) + .build(); + StrictMode.setVmPolicy(policy); + } + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); final boolean crash_reports = prefs.getBoolean("crash_reports", false);