diff --git a/app/build.gradle b/app/build.gradle index 38ab280..14c1952 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { minSdk 28 targetSdk 35 versionCode 15 - versionName "1.12.5fd" + versionName "1.12.5f" multiDexEnabled false proguardFiles += 'proguard-rules.pro' buildConfigField 'String', 'HOOK_TARGET_VERSION', '"141700420"' diff --git a/app/src/main/java/io/github/hiro/lime/hooks/EmbedOptions.java b/app/src/main/java/io/github/hiro/lime/hooks/EmbedOptions.java index 4f4fb36..31a5df1 100644 --- a/app/src/main/java/io/github/hiro/lime/hooks/EmbedOptions.java +++ b/app/src/main/java/io/github/hiro/lime/hooks/EmbedOptions.java @@ -231,18 +231,25 @@ public class EmbedOptions implements IHook { } }); - layout.addView(restorefolderButton); - Button MuteGroups_Button = new Button(context); - MuteGroups_Button.setLayoutParams(buttonParams); - MuteGroups_Button.setText("通知を無効にしているグループ"); - MuteGroups_Button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MuteGroups_Button(context); - } - }); - layout.addView(MuteGroups_Button); + if (limeOptions.Notif_invalid.checked) { + // 条件が満たされた場合にのみボタンを作成 + layout.addView(restorefolderButton); + + Button MuteGroups_Button = new Button(context); + MuteGroups_Button.setLayoutParams(buttonParams); + MuteGroups_Button.setText("通知を無効にしているグループ"); + + MuteGroups_Button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MuteGroups_Button(context); // ボタンクリック時の処理 + } + }); + + layout.addView(MuteGroups_Button); + } + builder.setPositiveButton(R.string.positive_button, new DialogInterface.OnClickListener() { @Override diff --git a/app/src/main/java/io/github/hiro/lime/hooks/Notif_invalid.java b/app/src/main/java/io/github/hiro/lime/hooks/Notif_invalid.java index 22489a5..71cfe84 100644 --- a/app/src/main/java/io/github/hiro/lime/hooks/Notif_invalid.java +++ b/app/src/main/java/io/github/hiro/lime/hooks/Notif_invalid.java @@ -58,15 +58,11 @@ public class Notif_invalid implements IHook { private void saveChatNameToFile(String chatName, File dir) { if (!dir.exists() && !dir.mkdirs()) { - XposedBridge.log("Failed to create directory: " + dir.getPath()); return; } - File file = new File(dir, "Notification.txt"); - try { if (!file.exists() && !file.createNewFile()) { - XposedBridge.log("Failed to create file: " + file.getPath()); return; } @@ -77,21 +73,15 @@ public class Notif_invalid implements IHook { existingChatNames.add(line.trim()); } } catch (IOException e) { - XposedBridge.log("Error reading file: " + e.getMessage()); + } if (!existingChatNames.contains(chatName.trim())) { try (FileWriter writer = new FileWriter(file, true)) { writer.write(chatName + "\n"); - XposedBridge.log("Saved chatName: " + chatName); - } catch (IOException e) { - XposedBridge.log("Error writing to file: " + e.getMessage()); } - } else { - XposedBridge.log("Chat name already exists: " + chatName); } } catch (IOException e) { - XposedBridge.log("Error accessing file: " + e.getMessage()); } } }); @@ -104,11 +94,16 @@ public class Notif_invalid implements IHook { int id = (int) param.args[1]; Notification notification = (Notification) param.args[2]; - logNotificationDetails("NotificationManager.notify (with tag)", id, notification); + // logNotificationDetails("NotificationManager.notify (with tag)", id, notification); String subText = notification.extras.getString(Notification.EXTRA_SUB_TEXT); + + + List chatNamesFromFile = loadNamesFromFile(); for (String chatName : chatNamesFromFile) { if (subText != null && subText.contains(chatName)) { + + param.setResult(null); return; } diff --git a/app/src/main/java/io/github/hiro/lime/hooks/ReadChecker.java b/app/src/main/java/io/github/hiro/lime/hooks/ReadChecker.java index 902bce1..0bd5ea3 100644 --- a/app/src/main/java/io/github/hiro/lime/hooks/ReadChecker.java +++ b/app/src/main/java/io/github/hiro/lime/hooks/ReadChecker.java @@ -97,7 +97,7 @@ public class ReadChecker implements IHook { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { String chatId = (String) param.getResult(); - XposedBridge.log(chatId); + //(chatId); if (isGroupExists(chatId)) { shouldHookOnCreate = true; currentGroupId = chatId; @@ -128,7 +128,7 @@ public class ReadChecker implements IHook { private boolean isGroupExists(String groupId) { if (limeDatabase == null) { - // XposedBridge.log("Database is not initialized."); + //("Database is not initialized."); return false; } @@ -144,7 +144,7 @@ public class ReadChecker implements IHook { private boolean isNoGroup(String groupId) { if (limeDatabase == null) { - // XposedBridge.log("Database is not initialized."); + //("Database is not initialized."); return true; } @@ -313,9 +313,9 @@ public class ReadChecker implements IHook { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { String paramValue = param.args[0].toString(); - XposedBridge.log(paramValue); + //(paramValue); if (appContext == null) { - XposedBridge.log("appContext is null!"); + //("appContext is null!"); return; } @@ -324,7 +324,7 @@ public class ReadChecker implements IHook { moduleContext = appContext.createPackageContext( "io.github.hiro.lime", Context.CONTEXT_IGNORE_SECURITY); } catch (PackageManager.NameNotFoundException e) { - // XposedBridge.log("Failed to create package context: " + e.getMessage()); + //("Failed to create package context: " + e.getMessage()); return; } @@ -425,7 +425,7 @@ public class ReadChecker implements IHook { limeDatabase.update("group_messages", values, "group_id=? AND server_id=?", new String[]{groupId, previousServerId}); - // XposedBridge.log("Marked as read in lime_data.db: Group_id: " + groupId + ", Server_id: " + previousServerId + ", Updated user_name: " + updatedUserName); + //("Marked as read in lime_data.db: Group_id: " + groupId + ", Server_id: " + previousServerId + ", Updated user_name: " + updatedUserName); } cursor.close(); @@ -479,13 +479,13 @@ public class ReadChecker implements IHook { writer.append("Missing serverId in paramValue:").append(paramValue).append("\n"); writer.close(); } catch (IOException e) { - // XposedBridge.log("Error writing paramValue to file: " + e.getMessage()); + //("Error writing paramValue to file: " + e.getMessage()); } } private String queryDatabase(SQLiteDatabase db, String query, String... selectionArgs) { if (db == null) { - // XposedBridge.log("Database is not initialized."); + //("Database is not initialized."); return null; } Cursor cursor = db.rawQuery(query, selectionArgs); @@ -503,9 +503,9 @@ public class ReadChecker implements IHook { if (oldDbFile.exists()) { boolean deleted = oldDbFile.delete(); if (deleted) { - XposedBridge.log("Old database file lime_data.db deleted."); + //("Old database file lime_data.db deleted."); } else { - XposedBridge.log("Failed to delete old database file lime_data.db."); + //("Failed to delete old database file lime_data.db."); } } // 新しいデータベースファイルの初期化 @@ -524,7 +524,7 @@ public class ReadChecker implements IHook { ");"; limeDatabase.execSQL(createGroupTable); - // XposedBridge.log("Database initialized and group_messages table created."); + //XposedBridge.log("Database initialized and group_messages table created."); } private void saveData(String groupId, String serverId, String checkedUser, String groupName, String content, String user_name, String createdTime, Context context) { @@ -551,7 +551,7 @@ public class ReadChecker implements IHook { ContentValues values = new ContentValues(); values.put("user_name", updatedUserName); limeDatabase.update("group_messages", values, "server_id=? AND checked_user=?", new String[]{serverId, checkedUser}); - // XposedBridge.log("User name updated for server_id: " + serverId + ", checked_user: " + checkedUser); + //XposedBridge.log("User name updated for server_id: " + serverId + ", checked_user: " + checkedUser); } } else { // 新しいレコードを挿入 @@ -588,7 +588,7 @@ public class ReadChecker implements IHook { values.put("user_name", updatedUserName); limeDatabase.update("group_messages", values, "group_id=? AND server_id=?", new String[]{groupId, serverId}); - // XposedBridge.log("Updated user_name for other records in group_id: " + groupId + ", server_id: " + serverId); + //XposedBridge.log("Updated user_name for other records in group_id: " + groupId + ", server_id: " + serverId); } } } catch (Exception e) { @@ -606,8 +606,8 @@ public class ReadChecker implements IHook { "VALUES(?, ?, ?, ?, ?, ?, ?);"; limeDatabase.execSQL(insertQuery, new Object[]{groupId, serverId, checkedUser, groupName, content, user_name, createdTime}); - XposedBridge.log("Saved to DB: Group_Id: " + groupId + ", Server_id: " + serverId + ", Checked_user: " + checkedUser + - ", Group_Name: " + groupName + ", Content: " + content + ", user_name: " + user_name + ", Created_Time: " + createdTime); + //XposedBridge.log("Saved to DB: Group_Id: " + groupId + ", Server_id: " + serverId + ", Checked_user: " + checkedUser + + // ", Group_Name: " + groupName + ", Content: " + content + ", user_name: " + user_name + ", Created_Time: " + createdTime); } catch (Exception e) { Log.e("insertNewRecord", "Error saving data to database:", e); }