this should now work both on Android 4 and Android 5
[noFUDroid.git] / app / src / main / java / it / skarafaz / xposed / nwmonblocker / Mod.java
index bd2818cd593759dfd459f01e84a6a914c8f9889d..cae346fc97012fe1e3b3fa7b26514e3148c489f8 100644 (file)
@@ -1,35 +1,23 @@
 package it.skarafaz.xposed.nwmonblocker;
 
-import de.robv.android.xposed.IXposedHookLoadPackage;
+import de.robv.android.xposed.IXposedHookZygoteInit;
 import de.robv.android.xposed.XC_MethodReplacement;
-import de.robv.android.xposed.XposedBridge;
 import de.robv.android.xposed.XposedHelpers;
-import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
 
-public class Mod implements IXposedHookLoadPackage {
-    // Just a helper function, useful to figure out package names
-    private void tryToLoad(String className, ClassLoader loader) {
-        try {
-            XposedHelpers.findClass(className, loader);
-            XposedBridge.log("  Found " + className);
-        }
-        catch (Throwable t) {}
-    }
+/* "Network May Be Monitored" blocker for Android 4.4. */
+
+public class Mod implements IXposedHookZygoteInit {
+    private static final String CLASS_DEVICE_POLICY_MANAGER = "android.app.admin.DevicePolicyManager";
+
+    @Override
+    public void initZygote(StartupParam startupParam) throws Throwable {
+        final Class<?> devicePolicyManager = XposedHelpers.findClass(CLASS_DEVICE_POLICY_MANAGER, null);
 
-    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
-        if (!lpparam.packageName.equals("android"))
-            return;
-        
-        final Class<?> userHandle = XposedHelpers.findClass("android.os.UserHandle", lpparam.classLoader);
-        final Class<?> notifyTask = XposedHelpers.findClass("com.android.server.devicepolicy.DevicePolicyManagerService$MonitoringCertNotificationTask", lpparam.classLoader);
-        
-        XposedHelpers.findAndHookMethod(notifyTask, "manageNotification", userHandle,
-            new XC_MethodReplacement() {
-                @Override
-                protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
-                    XposedBridge.log("Not showing FUD notification");
-                    return null;
-                }
+        XposedHelpers.findAndHookMethod(devicePolicyManager, "hasAnyCaCertsInstalled", new XC_MethodReplacement() {
+            @Override
+            protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
+                return false;
+            }
         });
     }
 }