stirante

Groups

Dec 27th, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.45 KB | None | 0 0
  1. package com.stirante.quizcheat;
  2.  
  3. import android.view.View;
  4. import android.widget.CheckBox;
  5. import android.widget.CompoundButton;
  6.  
  7. import java.util.ArrayList;
  8. import java.util.Collections;
  9. import java.util.HashMap;
  10. import java.util.List;
  11.  
  12. import de.robv.android.xposed.XC_MethodHook;
  13. import de.robv.android.xposed.XposedHelpers;
  14. import de.robv.android.xposed.callbacks.XC_LoadPackage;
  15.  
  16. public class Groups {
  17.  
  18.     private static ArrayList<Group> groups = new ArrayList<>();
  19.  
  20.     public static void handleLoadPackage(final XC_LoadPackage.LoadPackageParam packageParam) throws Throwable {
  21.         groups.add(new Group("Snapprefs Team", "snapprefs", "mr.yawnie"));
  22.         final Class<?> Friend = XposedHelpers.findClass("com.snapchat.android.model.Friend", packageParam.classLoader);
  23.         final Class<?> Ly = XposedHelpers.findClass("Ly", packageParam.classLoader);
  24.         XposedHelpers.findAndHookMethod("OI", packageParam.classLoader, "a", new XC_MethodHook() {
  25.             @Override
  26.             protected void afterHookedMethod(MethodHookParam param) throws Throwable {
  27.                 ArrayList result = (ArrayList) param.getResult();
  28.                 ArrayList newResult = new ArrayList();
  29.                 Object edit = XposedHelpers.newInstance(Ly, "edit", "Edit groups");
  30.                 XposedHelpers.setAdditionalInstanceField(edit, "editGroups", true);
  31.                 newResult.add(edit);
  32.                 for (Group g : groups) {
  33.                     Object group = XposedHelpers.newInstance(Ly, "group_" + g.name, g.name);
  34.                     XposedHelpers.setAdditionalInstanceField(group, "group", g);
  35.                     newResult.add(group);
  36.                 }
  37.                 newResult.addAll(result);
  38.                 param.setResult(newResult);
  39.             }
  40.         });
  41.         XposedHelpers.findAndHookMethod("IE", packageParam.classLoader, "a", XposedHelpers.findClass("android.support.v7.widget.RecyclerView$u", packageParam.classLoader), int.class, new XC_MethodHook() {
  42.  
  43.             @Override
  44.             protected void afterHookedMethod(final MethodHookParam param) throws Throwable {
  45.                 Object element = XposedHelpers.callMethod(XposedHelpers.getObjectField(param.thisObject, "f"), "get", param.args[1]);
  46.                 if (XposedHelpers.getAdditionalInstanceField(element, "editGroups") != null) {
  47.                     CheckBox k = (CheckBox) XposedHelpers.getObjectField(param.args[0], "k");
  48.                     k.setVisibility(View.GONE);
  49.                     k.setOnCheckedChangeListener(null);
  50.                     k.setOnClickListener(null);
  51.                     ((View) XposedHelpers.getObjectField(param.args[0], "a")).setOnClickListener(new View.OnClickListener() {
  52.                         @Override
  53.                         public void onClick(View v) {
  54.                             NotificationUtil.showMessage("Editing groups", 0xFF00FF00, 4000, packageParam.classLoader);
  55.                         }
  56.                     });
  57.                 }
  58.                 final Group group = (Group) XposedHelpers.getAdditionalInstanceField(element, "group");
  59.                 if (group == null) return;
  60.                 HashMap<String, Boolean> checks = (HashMap<String, Boolean>) XposedHelpers.getAdditionalInstanceField(param.thisObject, "checks");
  61.                 if (checks == null) {
  62.                     checks = new HashMap<>();
  63.                     XposedHelpers.setAdditionalInstanceField(param.thisObject, "checks", checks);
  64.                 }
  65.                 //Here change this color if you want
  66. //                ((View) XposedHelpers.getObjectField(param.args[0], "a")).setBackgroundColor(0xFF66FA77);
  67.                 final CheckBox check = (CheckBox) XposedHelpers.getObjectField(param.args[0], "k");
  68.                 if (!checks.containsKey(group.name)) {
  69.                     checks.put(group.name, false);
  70.                 }
  71.                 else {
  72.                     check.setOnCheckedChangeListener(null);
  73.                     check.setChecked(checks.get(group.name));
  74.                 }
  75.                 final HashMap<String, Boolean> finalChecks = checks;
  76.                 check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  77.                     @Override
  78.                     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  79.                         finalChecks.put(group.name, isChecked);
  80.                         List f = (List) XposedHelpers.getObjectField(param.thisObject, "f");
  81.                         for (String user : group.users) {
  82.                             for (Object ii : f) {
  83.                                 if (Friend.isInstance(ii) && ((String) XposedHelpers.getObjectField(ii, "mUsername")).equalsIgnoreCase(user)) {
  84.                                     XposedHelpers.callMethod(XposedHelpers.getObjectField(param.thisObject, "k"), "a", new Class[]{int.class, XposedHelpers.findClass("II", packageParam.classLoader), boolean.class}, XposedHelpers.callMethod(param.args[0], "e"), ii, isChecked);
  85.                                     break;
  86.                                 }
  87.                             }
  88.                         }
  89.                     }
  90.                 });
  91.             }
  92.         });
  93.     }
  94.  
  95.     static class Group {
  96.         public String name;
  97.         public ArrayList<String> users = new ArrayList<>();
  98.  
  99.         public Group(String name, String... users) {
  100.             this.name = name;
  101.             Collections.addAll(this.users, users);
  102.         }
  103.  
  104.     }
  105. }
Add Comment
Please, Sign In to add comment