public static <T> T getFirstParam(Object[] args, Class<T> tClass) { if (args == null) { return null; } int index = ArrayUtils.indexOfFirst(args, tClass); if (index != -1) { return (T) args[index]; } return null; }
@SuppressWarnings("unchecked") public static <T> T getFirst(Object[] args, Class<?> clazz) { int index = indexOfFirst(args, clazz); if (index != -1) { return (T) args[index]; } return null; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int index = ArrayUtils.indexOfFirst(args, WindowManager.LayoutParams.class); if (index != -1) { WindowManager.LayoutParams attrs = (WindowManager.LayoutParams) args[index]; if (attrs != null) { attrs.packageName = getHostPkg(); } } return method.invoke(who, args); } }
@Override public boolean beforeCall(Object who, Method method, Object... args) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && args[0] instanceof String) { args[0] = getHostPkg(); } int index = ArrayUtils.indexOfFirst(args, WorkSource.class); if (index >= 0) { args[index] = null; } return true; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int editorInfoIndex = ArrayUtils.indexOfFirst(args, EditorInfo.class); if (editorInfoIndex != -1) { EditorInfo attribute = (EditorInfo) args[editorInfoIndex]; attribute.packageName = getHostPkg(); } return method.invoke(who, args); } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int index = ArrayUtils.indexOfFirst(args, WorkSource.class); if (index >= 0) { args[index] = null; } return super.call(who, method, args); } }
public static String replaceFirstAppPkg(Object[] args) { if (args == null) { return null; } int index = ArrayUtils.indexOfFirst(args, String.class); if (index != -1) { String pkg = (String) args[index]; args[index] = VirtualCore.get().getHostPkg(); return pkg; } return null; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { String pkg = (String) args[0]; if (getHostPkg().equals(pkg)) { return method.invoke(who, args); } int enableIndex = ArrayUtils.indexOfFirst(args, Boolean.class); boolean enable = (boolean) args[enableIndex]; VNotificationManager.get().setNotificationsEnabledForPackage(pkg, enable, getAppUserId()); return 0; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { String pkg = (String) args[0]; if (getHostPkg().equals(pkg)) { return method.invoke(who, args); } int notificationIndex = ArrayUtils.indexOfFirst(args, Notification.class); int idIndex = ArrayUtils.indexOfFirst(args, Integer.class); int id = (int) args[idIndex]; id = VNotificationManager.get().dealNotificationId(id, pkg, null, getAppUserId()); args[idIndex] = id; Notification notification = (Notification) args[notificationIndex]; if (!VNotificationManager.get().dealNotification(id, notification, pkg)) { return 0; } VNotificationManager.get().addNotification(id, null, pkg, getAppUserId()); args[0] = getHostPkg(); return method.invoke(who, args); } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { String pkg = (String) args[0]; if (getHostPkg().equals(pkg)) { return method.invoke(who, args); } int notificationIndex = ArrayUtils.indexOfFirst(args, Notification.class); int idIndex = ArrayUtils.indexOfFirst(args, Integer.class); int tagIndex = (Build.VERSION.SDK_INT >= 18 ? 2 : 1); int id = (int) args[idIndex]; String tag = (String) args[tagIndex]; id = VNotificationManager.get().dealNotificationId(id, pkg, tag, getAppUserId()); tag = VNotificationManager.get().dealNotificationTag(id, pkg, tag, getAppUserId()); args[idIndex] = id; args[tagIndex] = tag; //key(tag,id) Notification notification = (Notification) args[notificationIndex]; if (!VNotificationManager.get().dealNotification(id, notification, pkg)) { return 0; } VNotificationManager.get().addNotification(id, tag, pkg, getAppUserId()); args[0] = getHostPkg(); if (Build.VERSION.SDK_INT >= 18 && args[1] instanceof String) { args[1] = getHostPkg(); } return method.invoke(who, args); } }
@SuppressWarnings("unchecked") public static <T> T getFirst(Object[] args, Class<?> clazz) { int index = indexOfFirst(args, clazz); if (index != -1) { return (T) args[index]; } return null; }
public static <T> T getFirstParam(Object[] args, Class<T> tClass) { if (args == null) { return null; } int index = ArrayUtils.indexOfFirst(args, tClass); if (index != -1) { return (T) args[index]; } return null; }
@Override public boolean beforeCall(Object who, Method method, Object... args) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && args[0] instanceof String) { args[0] = getHostPkg(); } int index = ArrayUtils.indexOfFirst(args, WorkSource.class); if (index >= 0) { args[index] = null; } return true; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int index = ArrayUtils.indexOfFirst(args, WindowManager.LayoutParams.class); if (index != -1) { WindowManager.LayoutParams attrs = (WindowManager.LayoutParams) args[index]; if (attrs != null) { attrs.packageName = getHostPkg(); } } return method.invoke(who, args); } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int index = ArrayUtils.indexOfFirst(args, WorkSource.class); if (index >= 0) { args[index] = null; } return super.call(who, method, args); } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int editorInfoIndex = ArrayUtils.indexOfFirst(args, EditorInfo.class); if (editorInfoIndex != -1) { EditorInfo attribute = (EditorInfo) args[editorInfoIndex]; attribute.packageName = getHostPkg(); } return method.invoke(who, args); } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int index = ArrayUtils.indexOfFirst(args, WindowManager.LayoutParams.class); if (index != -1) { WindowManager.LayoutParams attrs = (WindowManager.LayoutParams) args[index]; if (attrs != null) { attrs.packageName = getHostPkg(); } } return method.invoke(who, args); } }
public static String replaceFirstAppPkg(Object[] args) { if (args == null) { return null; } int index = ArrayUtils.indexOfFirst(args, String.class); if (index != -1) { String pkg = (String) args[index]; args[index] = VirtualCore.get().getHostPkg(); return pkg; } return null; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { String pkg = (String) args[0]; if (getHostPkg().equals(pkg)) { return method.invoke(who, args); } int enableIndex = ArrayUtils.indexOfFirst(args, Boolean.class); boolean enable = (boolean) args[enableIndex]; VNotificationManager.get().setNotificationsEnabledForPackage(pkg, enable, getAppUserId()); return 0; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { String pkg = (String) args[0]; if (getHostPkg().equals(pkg)) { return method.invoke(who, args); } int enableIndex = ArrayUtils.indexOfFirst(args, Boolean.class); boolean enable = (boolean) args[enableIndex]; VNotificationManager.get().setNotificationsEnabledForPackage(pkg, enable, getAppUserId()); return 0; } }