summaryrefslogtreecommitdiff
path: root/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java')
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java42
1 files changed, 36 insertions, 6 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
index 6c5e3f10..92bfb61f 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
@@ -14,6 +14,12 @@ import android.graphics.Color;
import android.os.Build;
import android.os.StrictMode;
+import android.os.strictmode.Violation;
+
+import androidx.annotation.RequiresApi;
+
+import java.util.concurrent.Executors;
+
import de.blinkt.openvpn.BuildConfig;
import de.blinkt.openvpn.R;
import de.blinkt.openvpn.api.AppRestrictions;
@@ -23,6 +29,9 @@ public class ICSOpenVPNApplication extends Application {
@Override
public void onCreate() {
+ if (BuildConfig.BUILD_TYPE.equals("debug"))
+ enableStrictModes();
+
if("robolectric".equals(Build.FINGERPRINT))
return;
@@ -34,8 +43,7 @@ public class ICSOpenVPNApplication extends Application {
mStatus = new StatusListener();
mStatus.init(getApplicationContext());
- if (BuildConfig.BUILD_TYPE.equals("debug"))
- enableStrictModes();
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AppRestrictions.getInstance(this).checkRestrictions(this);
@@ -43,15 +51,36 @@ public class ICSOpenVPNApplication extends Application {
}
private void enableStrictModes() {
- StrictMode.VmPolicy policy = new StrictMode.VmPolicy.Builder()
+ StrictMode.ThreadPolicy.Builder tpbuilder = new StrictMode.ThreadPolicy.Builder()
+ .detectAll()
+ .penaltyLog();
+
+
+
+ StrictMode.VmPolicy.Builder vpbuilder = new StrictMode.VmPolicy.Builder()
.detectAll()
- .penaltyLog()
- .penaltyDeath()
- .build();
+ .penaltyLog();
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ tpbuilder.penaltyListener(Executors.newSingleThreadExecutor(), this::logViolation);
+ vpbuilder.penaltyListener(Executors.newSingleThreadExecutor(), this::logViolation);
+
+ }
+ //tpbuilder.penaltyDeath();
+ //vpbuilder.penaltyDeath();
+
+ StrictMode.VmPolicy policy = vpbuilder.build();
StrictMode.setVmPolicy(policy);
}
+ @RequiresApi(api = Build.VERSION_CODES.P)
+ public void logViolation(Violation v) {
+ String name = Application.getProcessName();
+ System.err.println("------------------------- Violation detected in " + name + " ------" + v.getCause() + "---------------------------");
+ VpnStatus.logException(VpnStatus.LogLevel.DEBUG, null, v);
+ }
+
@TargetApi(Build.VERSION_CODES.O)
private void createNotificationChannels() {
NotificationManager mNotificationManager =
@@ -90,4 +119,5 @@ public class ICSOpenVPNApplication extends Application {
mChannel.setLightColor(Color.CYAN);
mNotificationManager.createNotificationChannel(mChannel);
}
+
}