From e4b8691409b142beab98038ef6f7c93d0cc08c17 Mon Sep 17 00:00:00 2001 From: "Vincent Qiu (HOHO``)" Date: Tue, 5 Dec 2023 22:11:27 +0800 Subject: [PATCH 01/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Hook=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=AE=9D=E6=8E=A8=E8=8D=90=E5=BA=94=E7=94=A8=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=8B=BE=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 +++ app/src/main/res/values/arrays.xml | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 app/src/main/res/values/arrays.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 061091f9e..de84dbf5d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,6 +28,9 @@ android:name="xposedminversion" android:value="54"/> + + + + + com.eg.android.AlipayGphone + + \ No newline at end of file From adab21aac9b914038fb3eb2215d98f82863fe0f5 Mon Sep 17 00:00:00 2001 From: Magical Yang Date: Wed, 6 Dec 2023 15:45:31 +0800 Subject: [PATCH 02/21] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=96=B0=E7=89=88?= =?UTF-8?q?=E5=B0=8F=E9=B8=A1=E8=B4=B4=E8=B4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xposed/quickenergy/AntFarm.java | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/pansong291/xposed/quickenergy/AntFarm.java b/app/src/main/java/pansong291/xposed/quickenergy/AntFarm.java index ace88db90..da973655b 100644 --- a/app/src/main/java/pansong291/xposed/quickenergy/AntFarm.java +++ b/app/src/main/java/pansong291/xposed/quickenergy/AntFarm.java @@ -1,6 +1,7 @@ package pansong291.xposed.quickenergy; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import pansong291.xposed.quickenergy.hook.AntFarmRpcCall; import pansong291.xposed.quickenergy.util.*; @@ -1317,8 +1318,6 @@ private static void drawLotteryPlus(JSONObject lotteryPlusInfo) { private static void visit() { try { - String s, memo; - JSONObject jo; for (int i = 0; i < Config.getVisitFriendList().size(); i++) { String userId = Config.getVisitFriendList().get(i); if (userId.equals(FriendIdMap.currentUid)) @@ -1396,27 +1395,34 @@ private static void acceptGift() { } } + private static void diaryTietie(String queryDayStr, String roleId) throws JSONException { + JSONObject jo = new JSONObject(AntFarmRpcCall.diaryTietie(queryDayStr, roleId)); + if ("SUCCESS".equals(jo.getString("memo"))) { + String prizeType = jo.getString("prizeType"); + int prizeNum = jo.optInt("prizeNum", 0); + Log.farm("贴贴小鸡💞[" + prizeType + "*" + prizeNum + "]"); + } else { + Log.i(jo.getString("memo"), jo.toString()); + } + } + private static void queryChickenDiary(String queryDayStr) { try { JSONObject jo = new JSONObject(AntFarmRpcCall.queryChickenDiary(queryDayStr)); if ("SUCCESS".equals(jo.getString("resultCode"))) { + if (!jo.getBoolean("hasTietie")) { + diaryTietie(queryDayStr, "NEW"); + return; + } JSONObject chickenDiary = jo.getJSONObject("data").getJSONObject("chickenDiary"); - String diaryDateStr = chickenDiary.getString("diaryDateStr"); if (!chickenDiary.has("tietieStatus")) return; JSONObject tietieStatus = chickenDiary.getJSONObject("tietieStatus"); - Iterator it = tietieStatus.keys(); + Iterator it = tietieStatus.keys(); while (it.hasNext()) { - String key = (String) it.next(); + String key = it.next(); if (tietieStatus.optBoolean(key, false)) { - jo = new JSONObject(AntFarmRpcCall.diaryTietie(diaryDateStr, key)); - if ("SUCCESS".equals(jo.getString("memo"))) { - String prizeType = jo.getString("prizeType"); - int prizeNum = jo.optInt("prizeNum", 0); - Log.farm("贴贴小鸡💞[" + prizeType + "*" + prizeNum + "]"); - } else { - Log.i(jo.getString("memo"), jo.toString()); - } + diaryTietie(queryDayStr, key); } } } else { From 102bee7a5a4da620ae8616f9c9d1633f968fb1d9 Mon Sep 17 00:00:00 2001 From: acooler15 Date: Mon, 6 Nov 2023 20:23:40 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E6=94=B6=E5=8F=96=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E5=A4=8D=E6=B4=BB=E5=9B=9E=E8=B5=A0=E7=9A=84=E9=87=91=E7=90=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xposed/quickenergy/AntForest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/app/src/main/java/pansong291/xposed/quickenergy/AntForest.java b/app/src/main/java/pansong291/xposed/quickenergy/AntForest.java index 55170ae53..03fb1114c 100644 --- a/app/src/main/java/pansong291/xposed/quickenergy/AntForest.java +++ b/app/src/main/java/pansong291/xposed/quickenergy/AntForest.java @@ -439,6 +439,28 @@ private static void canCollectSelfEnergy() { } else { Log.recordLog("收取[我]的复活金球失败:" + joEnergy.getString("resultDesc"), str); } + } else if ("baohuhuizeng".equals(bizType)) { + String friendId = wateringBubble.getString("userId"); + String str = AntForestRpcCall.collectEnergy(bizType, selfId, + wateringBubble.getLong("id")); + JSONObject joEnergy = new JSONObject(str); + if ("SUCCESS".equals(joEnergy.getString("resultCode"))) { + JSONArray bubbles = joEnergy.getJSONArray("bubbles"); + for (int j = 0; j < bubbles.length(); j++) { + collected = bubbles.getJSONObject(j).getInt("collectedEnergy"); + } + if (collected > 0) { + totalCollected += collected; + Statistics.addData(Statistics.DataType.COLLECTED, collected); + String msg = "收取金球🍯[" + FriendIdMap.getNameById(friendId) + "]复活回赠[" + collected + "g]"; + Log.forest(msg); + AntForestToast.show(msg); + } else { + Log.recordLog("收取[" + FriendIdMap.getNameById(friendId) + "]的复活回赠金球失败", ""); + } + } else { + Log.recordLog("收取[" + FriendIdMap.getNameById(friendId) + "]的复活回赠金球失败:" + joEnergy.getString("resultDesc"), str); + } } Thread.sleep(1000L); } From 5b4e691b6c194a7ab33fa04b6311e8db4dc49287 Mon Sep 17 00:00:00 2001 From: acooler15 Date: Sun, 7 Jan 2024 01:57:32 +0000 Subject: [PATCH 04/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E2=80=9C=E5=A4=9A?= =?UTF-8?q?=E9=80=89=E2=80=9D=E5=92=8C=E2=80=9C=E5=8F=8D=E9=80=89=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xposed/quickenergy/ui/ListAdapter.java | 23 ++++++++++- .../xposed/quickenergy/ui/ListDialog.java | 38 +++++++++++++++++-- app/src/main/res/layout/dialog_list.xml | 32 ++++++++++++++++ app/src/main/res/values-zh-rCN/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ 5 files changed, 94 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/pansong291/xposed/quickenergy/ui/ListAdapter.java b/app/src/main/java/pansong291/xposed/quickenergy/ui/ListAdapter.java index eccb8c2e5..7ae0c914c 100644 --- a/app/src/main/java/pansong291/xposed/quickenergy/ui/ListAdapter.java +++ b/app/src/main/java/pansong291/xposed/quickenergy/ui/ListAdapter.java @@ -66,8 +66,7 @@ public void setSelectedList(List l) { } } - public int - findLast(CharSequence cs) { + public int findLast(CharSequence cs) { if (list == null || list.isEmpty()) return -1; if (!cs.equals(findWord)) { @@ -116,6 +115,26 @@ public void exitFind() { findIndex = -1; } + public void selectAll(){ + selects.clear(); + for(IdAndName ai:list){ + selects.add(ai.id); + } + notifyDataSetChanged(); + } + + public void SelectInvert(){ + List newSelects = new ArrayList<>(); + for(IdAndName ai:list){ + if(!selects.contains(ai.id)){ + newSelects.add(ai.id); + } + } + selects.clear(); + selects.addAll(newSelects); + notifyDataSetChanged(); + } + @Override public int getCount() { return list == null ? 0 : list.size(); diff --git a/app/src/main/java/pansong291/xposed/quickenergy/ui/ListDialog.java b/app/src/main/java/pansong291/xposed/quickenergy/ui/ListDialog.java index 4d11ecfbc..b9798e511 100644 --- a/app/src/main/java/pansong291/xposed/quickenergy/ui/ListDialog.java +++ b/app/src/main/java/pansong291/xposed/quickenergy/ui/ListDialog.java @@ -14,6 +14,7 @@ import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; +import android.widget.RelativeLayout; import java.util.List; import pansong291.xposed.quickenergy.R; import pansong291.xposed.quickenergy.entity.AlipayUser; @@ -26,7 +27,8 @@ public class ListDialog { static AlertDialog listDialog; - static Button btn_find_last, btn_find_next; + static Button btn_find_last, btn_find_next, + btn_select_all, btn_select_invert; static EditText edt_find; static ListView lv_list; static List selectedList; @@ -42,6 +44,8 @@ public class ListDialog { static AlertDialog optionsDialog; static AlertDialog deleteDialog; + static RelativeLayout layout_batch_process; + public enum ListType { RADIO, CHECK, SHOW } @@ -77,7 +81,7 @@ private static AlertDialog getListDialog(Context c) { listDialog = new AlertDialog.Builder(c) .setTitle("title") .setView(getListView(c)) - .setPositiveButton(c.getString(R.string.ok), null) + .setPositiveButton(c.getString(R.string.close), null) .create(); listDialog.setOnShowListener( new OnShowListener() { @@ -90,6 +94,9 @@ public OnShowListener setContext(Context c) { @Override public void onShow(DialogInterface p1) { + AlertDialog d = (AlertDialog) p1; + layout_batch_process = d.findViewById(R.id.layout_batch_process); + layout_batch_process.setVisibility(listType==ListType.CHECK&&countList==null?View.VISIBLE:View.GONE); ListAdapter.get(c).notifyDataSetChanged(); } }.setContext(c)); @@ -98,11 +105,19 @@ public void onShow(DialogInterface p1) { private static View getListView(Context c) { View v = LayoutInflater.from(c).inflate(R.layout.dialog_list, null); - OnBtnClickListener onBtnClickListener = new OnBtnClickListener(); + btn_find_last = v.findViewById(R.id.btn_find_last); btn_find_next = v.findViewById(R.id.btn_find_next); + btn_select_all = v.findViewById(R.id.btn_select_all); + btn_select_invert = v.findViewById(R.id.btn_select_invert); + + OnBtnClickListener onBtnClickListener = new OnBtnClickListener(); + BatchBtnOnClickListener batchBtnOnClickListener = new BatchBtnOnClickListener(); btn_find_last.setOnClickListener(onBtnClickListener); btn_find_next.setOnClickListener(onBtnClickListener); + btn_select_all.setOnClickListener(batchBtnOnClickListener); + btn_select_invert.setOnClickListener(batchBtnOnClickListener); + edt_find = v.findViewById(R.id.edt_find); lv_list = v.findViewById(R.id.lv_list); lv_list.setAdapter(ListAdapter.get(c)); @@ -351,4 +366,21 @@ public void onClick(View p1) { } } + static class BatchBtnOnClickListener implements View.OnClickListener { + @SuppressLint("NonConstantResourceId") + @Override + public void onClick(View p1) { + ListAdapter la = ListAdapter.get(p1.getContext()); + switch (p1.getId()) { + case R.id.btn_select_all: + la.selectAll(); + break; + case R.id.btn_select_invert: + la.SelectInvert(); + break; + } + Config.hasChanged = true; + } + } + } diff --git a/app/src/main/res/layout/dialog_list.xml b/app/src/main/res/layout/dialog_list.xml index 3bddfbf12..c0b755244 100644 --- a/app/src/main/res/layout/dialog_list.xml +++ b/app/src/main/res/layout/dialog_list.xml @@ -5,6 +5,38 @@ android:layout_height="match_parent" android:orientation="vertical"> + + +