diff --git a/app/build.gradle b/app/build.gradle
index c19d07d..2a83ec6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,7 +10,7 @@ android {
minSdk 28
targetSdk 35
versionCode 15
- versionName "1.12.5g"
+ versionName "1.12.5h"
multiDexEnabled false
proguardFiles += 'proguard-rules.pro'
buildConfigField 'String', 'HOOK_TARGET_VERSION', '"141700420"'
diff --git a/app/src/main/java/io/github/hiro/lime/hooks/NaviColor.java b/app/src/main/java/io/github/hiro/lime/hooks/NaviColor.java
index f0a4fcd..e201c32 100644
--- a/app/src/main/java/io/github/hiro/lime/hooks/NaviColor.java
+++ b/app/src/main/java/io/github/hiro/lime/hooks/NaviColor.java
@@ -75,9 +75,7 @@ public class NaviColor implements IHook {
// Define the view IDs that need to be checked
String[] viewIds = {
- "bnb_timeline", "bnb_timeline_spacer", "bnb_wallet",
- "bnb_wallet_spacer", "bnb_news", "bnb_call", "bnb_chat",
- "bnb_news_spacer", "bnb_call_spacer", "bnb_home_v2"
+
};
// Loop through each view ID and apply the background color change
@@ -88,24 +86,34 @@ public class NaviColor implements IHook {
// Log the resource ID to verify the view is found
if (resId != 0) {
- XposedBridge.log("Resource ID for " + viewId + ": " + resId);
+ //XposedBridge.log("Resource ID for " + viewId + ": " + resId);
} else {
- XposedBridge.log("Resource ID for " + viewId + " not found.");
+ //XposedBridge.log("Resource ID for " + viewId + " not found.");
}
// Log the name of the view dynamically
if (view != null) {
String viewName = getResourceName(activity, resId); // Get the resource name
- XposedBridge.log("Found view: " + viewName);
- view.setBackgroundColor(Color.BLACK); // Set the background color to black
+ //XposedBridge.log("Found view: " + viewName);
+
+ // Check the current background color and apply the color filter if it's #111111
+ if (view.getBackground() != null) {
+ ColorDrawable background = (ColorDrawable) view.getBackground();
+ int currentColor = background.getColor();
+
+ // If the current background color is #111111, change it to #000000
+ if (currentColor == Color.parseColor("#111111")) {
+ view.setBackgroundColor(Color.parseColor("#000000"));
+ //XposedBridge.log("Changed background color of view to #000000");
+ }
+ }
}
}
// Extend clickable area for main tab container
-// Change background color for main tab container
-// Extend clickable area for main tab container
int mainTabContainerResId = activity.getResources().getIdentifier("main_tab_container", "id", activity.getPackageName());
ViewGroup mainTabContainer = activity.findViewById(mainTabContainerResId);
+
if (mainTabContainer != null) {
for (int i = 2; i < mainTabContainer.getChildCount(); i += 2) {
ViewGroup icon = (ViewGroup) mainTabContainer.getChildAt(i);
@@ -128,8 +136,6 @@ public class NaviColor implements IHook {
}
}
}
-
-
}
// Helper method to get resource name
@@ -140,11 +146,11 @@ public class NaviColor implements IHook {
if (resourceName != null) {
return resourceName;
} else {
- XposedBridge.log("Resource name for ID " + resId + " is null.");
+ //XposedBridge.log("Resource name for ID " + resId + " is null.");
return "Unknown";
}
} catch (Resources.NotFoundException e) {
- XposedBridge.log("Resource not found for ID " + resId);
+ //XposedBridge.log("Resource not found for ID " + resId);
return "Unknown";
}
}
@@ -153,6 +159,7 @@ public class NaviColor implements IHook {
+
XposedHelpers.findAndHookMethod("android.view.View", loadPackageParam.classLoader, "onMeasure",
int.class, int.class, new XC_MethodHook() {
@Override
@@ -180,6 +187,7 @@ public class NaviColor implements IHook {
traverseAndChangeBackground(rootView);
}
+ // 全ての子ビューを再帰的に走査し、背景色を変更
// 全ての子ビューを再帰的に走査し、背景色を変更
private void traverseAndChangeBackground(View view) {
if (view == null) return;
@@ -187,7 +195,7 @@ public class NaviColor implements IHook {
try {
// リソース名を取得
String resourceName = view.getResources().getResourceEntryName(view.getId());
- XposedBridge.log("onResume - View Resource Name: " + resourceName);
+ //XposedBridge.log("onResume - View Resource Name: " + resourceName);
// 背景色の変更処理
Drawable background = view.getBackground();
@@ -195,10 +203,15 @@ public class NaviColor implements IHook {
int bgColor = ((ColorDrawable) background).getColor();
String hexColor = String.format("#%06X", (0xFFFFFF & bgColor)); // 色を16進数形式に変換
- // 色が #111111 または #1F1F1F の場合、#000000 に変更
- if (hexColor.equals("#111111") || hexColor.equals("#1F1F1F")) {
+ // 色が #111111 の場合、#FFFFFF に変更
+ if (hexColor.equals("#111111")) {
+ ((ColorDrawable) background).setColor(Color.parseColor("#FFFFFF"));
+ //XposedBridge.log("Changed Background Color for Resource Name: " + resourceName + " from #111111 to #FFFFFF");
+ }
+ // 色が #1F1F1F の場合、#000000 に変更
+ else if (hexColor.equals("#1F1F1F")) {
((ColorDrawable) background).setColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed Background Color for Resource Name: " + resourceName + " from " + hexColor + " to #000000");
+ //XposedBridge.log("Changed Background Color for Resource Name: " + resourceName + " from #1F1F1F to #000000");
}
}
@@ -211,9 +224,10 @@ public class NaviColor implements IHook {
}
} catch (Resources.NotFoundException e) {
- XposedBridge.log("onResume - Resource name not found for View ID: " + view.getId());
+ //XposedBridge.log("onResume - Resource name not found for View ID: " + view.getId());
}
}
+
});
@@ -225,7 +239,7 @@ public class NaviColor implements IHook {
// param.thisObject を View にキャストしてから getResources() を呼び出す
View view = (View) param.thisObject;
String resourceName = view.getResources().getResourceEntryName(resId);
- XposedBridge.log("setBackgroundResource - Resource Name: " + resourceName);
+ //XposedBridge.log("setBackgroundResource - Resource Name: " + resourceName);
// 背景リソースを取得
Drawable background = view.getBackground();
@@ -233,19 +247,25 @@ public class NaviColor implements IHook {
int bgColor = ((ColorDrawable) background).getColor();
String hexColor = String.format("#%06X", (0xFFFFFF & bgColor)); // 色を16進数形式に変換
- // 色が #111111 または #1F1F1F の場合、#000000 に変更
- if (hexColor.equals("#111111") || hexColor.equals("#1F1F1F")) {
+ // 色が #111111 の場合、#FFFFFF に変更
+ if (hexColor.equals("#111111")) {
+ ((ColorDrawable) background).setColor(Color.parseColor("#FFFFFF"));
+ //XposedBridge.log("Changed Background Color for Resource Name: " + resourceName + " from #111111 to #FFFFFF");
+ }
+ // 色が #1F1F1F の場合、#000000 に変更
+ else if (hexColor.equals("#1F1F1F")) {
((ColorDrawable) background).setColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed Background Color for Resource Name: " + resourceName + " from " + hexColor + " to #000000");
+ //XposedBridge.log("Changed Background Color for Resource Name: " + resourceName + " from #1F1F1F to #000000");
}
}
} catch (Resources.NotFoundException e) {
- XposedBridge.log("setBackgroundResource - Resource name not found for Resource ID: " + resId);
+ //XposedBridge.log("setBackgroundResource - Resource name not found for Resource ID: " + resId);
}
}
});
+
XposedHelpers.findAndHookMethod("android.app.Activity", loadPackageParam.classLoader, "onCreate", Bundle.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
@@ -274,7 +294,7 @@ public class NaviColor implements IHook {
try {
String resourceName = getViewResourceName(view);
- XposedBridge.log("Resource Name: " + resourceName);
+ //XposedBridge.log("Resource Name: " + resourceName);
// 背景色を変更
handleBackgroundColor(view, resourceName);
@@ -295,7 +315,7 @@ public class NaviColor implements IHook {
}
} catch (Exception e) {
- XposedBridge.log("Unexpected error in onAttachedToWindow: " + e.getMessage());
+ //XposedBridge.log("Unexpected error in onAttachedToWindow: " + e.getMessage());
}
}
@@ -305,7 +325,7 @@ public class NaviColor implements IHook {
try {
return view.getResources().getResourceEntryName(viewId);
} catch (Resources.NotFoundException e) {
- XposedBridge.log("Resource not found for View ID: " + viewId);
+ //XposedBridge.log("Resource not found for View ID: " + viewId);
return "unknown";
}
}
@@ -320,11 +340,15 @@ public class NaviColor implements IHook {
int bgColor = ((ColorDrawable) background).getColor();
String hexColor = convertToHexColor(bgColor);
- // 背景色が変更対象であれば、#000000 に変更
- if (hexColor.equals("#111111") || hexColor.equals("#1F1F1F") || resourceName.contains("search_bar_bg")) {
- ((ColorDrawable) background).setColor(Color.parseColor("#000000"));
+ // 背景色を変更する条件
+ if (hexColor.equals("#111111")) {
+ ((ColorDrawable) background).setColor(Color.parseColor("#FFFFFF")); // 白色に変更
+ //XposedBridge.log("Changed Background Color of Resource Name: " + resourceName + " from #111111 to #FFFFFF");
+ } else if (hexColor.equals("#1F1F1F") || resourceName.contains("search_bar_bg")) {
+ ((ColorDrawable) background).setColor(Color.parseColor("#000000")); // 黒色に変更
+ //XposedBridge.log("Changed Background Color of Resource Name: " + resourceName + " to #000000");
} else {
- XposedBridge.log("View Resource Name: " + resourceName + " Background Color: " + hexColor);
+ //XposedBridge.log("View Resource Name: " + resourceName + " Background Color: " + hexColor);
}
}
}
@@ -335,16 +359,19 @@ public class NaviColor implements IHook {
// テキスト色のカスタム処理
if (hexTextColor.equals("#111111")) {
- textView.setTextColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed Text Color of View Resource Name: " + resourceName + " from " + hexTextColor + " to #000000");
+ textView.setTextColor(Color.parseColor("#FFFFFF")); // 白色に変更
+ //XposedBridge.log("Changed Text Color of View Resource Name: " + resourceName + " from #111111 to #FFFFFF");
+ } else if (hexTextColor.equals("#1F1F1F")) {
+ textView.setTextColor(Color.parseColor("#000000")); // 黒色に変更
+ //XposedBridge.log("Changed Text Color of View Resource Name: " + resourceName + " from #1F1F1F to #000000");
} else {
- XposedBridge.log("View Resource Name: " + resourceName + " Text Color: " + hexTextColor);
+ //XposedBridge.log("View Resource Name: " + resourceName + " Text Color: " + hexTextColor);
}
}
private void handleImageViewColor(ImageView imageView, String resourceName) {
- // 画像ビューの色調整(例えば、カラー調整する場合)
- XposedBridge.log("ImageView Resource Name: " + resourceName);
+ // 画像ビューの色調整(必要に応じて実装)
+ //XposedBridge.log("ImageView Resource Name: " + resourceName);
}
private String convertToHexColor(int color) {
@@ -355,15 +382,16 @@ public class NaviColor implements IHook {
+
XposedHelpers.findAndHookMethod("android.view.ViewGroup", loadPackageParam.classLoader, "addView", View.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
View view = (View) param.args[0];
try {
String resourceName = view.getResources().getResourceEntryName(view.getId());
- XposedBridge.log("addView - Added View Resource Name: " + resourceName);
+ //XposedBridge.log("addView - Added View Resource Name: " + resourceName);
} catch (Resources.NotFoundException e) {
- XposedBridge.log("addView - Resource name not found for View ID: " + view.getId());
+ //XposedBridge.log("addView - Resource name not found for View ID: " + view.getId());
}
}
});
@@ -437,7 +465,7 @@ public class NaviColor implements IHook {
// 背景色を #000000 に変更
rootView.setBackgroundColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed Activity Background Color to #000000");
+ //XposedBridge.log("Changed Activity Background Color to #000000");
}
});
@@ -456,11 +484,11 @@ public class NaviColor implements IHook {
// リソース名を取得
String resourceName = getViewResourceName(view);
if (resourceName != null) {
- XposedBridge.log("Resource Name: " + resourceName);
+ //XposedBridge.log("Resource Name: " + resourceName);
}
} catch (Resources.NotFoundException e) {
// リソースが見つからなかった場合
- XposedBridge.log("Resource name not found for View ID: " + view.getId());
+ //XposedBridge.log("Resource name not found for View ID: " + view.getId());
}
// 子ビューを再帰的に処理
@@ -486,7 +514,7 @@ public class NaviColor implements IHook {
// リソース名を取得
String resourceName = getViewResourceName(view);
- XposedBridge.log("Resource Name: " + resourceName);
+ //XposedBridge.log("Resource Name: " + resourceName);
// 特定のリソース名の場合、背景がnullであっても黒色に変更する
if ("bnb_home_spacer_v2".equals(resourceName) ||
@@ -494,10 +522,10 @@ public class NaviColor implements IHook {
"bnb_timeline_spacer".equals(resourceName) ||
"bnb_news_spacer".equals(resourceName) ||
"bnb_wallet_spacer".equals(resourceName)) {
- XposedBridge.log("Background is null for Resource Name: " + resourceName + ", changing color to black.");
+ //XposedBridge.log("Background is null for Resource Name: " + resourceName + ", changing color to black.");
ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#000000"));
view.setBackground(colorDrawable); // Set black background
- XposedBridge.log("Set background color of Resource Name: " + resourceName + " to #000000");
+ //XposedBridge.log("Set background color of Resource Name: " + resourceName + " to #000000");
}
// 背景を取得
@@ -506,20 +534,20 @@ public class NaviColor implements IHook {
// 背景が null でないことを確認
if (background != null) {
// 背景のクラス名をログに出力
- XposedBridge.log("Background Class Name: " + background.getClass().getName());
+ //XposedBridge.log("Background Class Name: " + background.getClass().getName());
if (background instanceof ColorDrawable) {
((ColorDrawable) background).setColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed Background Color of Resource Name: " + resourceName + " to #000000");
+ //XposedBridge.log("Changed Background Color of Resource Name: " + resourceName + " to #000000");
} else if (background instanceof BitmapDrawable) {
- XposedBridge.log("BitmapDrawable background, cannot change color directly.");
+ //XposedBridge.log("BitmapDrawable background, cannot change color directly.");
} else if (background instanceof LayerDrawable) {
LayerDrawable layerDrawable = (LayerDrawable) background;
for (int i = 0; i < layerDrawable.getNumberOfLayers(); i++) {
Drawable layer = layerDrawable.getDrawable(i);
if (layer instanceof ColorDrawable) {
((ColorDrawable) layer).setColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed LayerDrawable Background Color of Resource Name: " + resourceName + " to #000000");
+ //XposedBridge.log("Changed LayerDrawable Background Color of Resource Name: " + resourceName + " to #000000");
}
}
} else if (background instanceof ClipDrawable) {
@@ -527,42 +555,37 @@ public class NaviColor implements IHook {
Drawable drawable = clipDrawable.getDrawable();
if (drawable instanceof ColorDrawable) {
((ColorDrawable) drawable).setColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed ClipDrawable Background Color of Resource Name: " + resourceName + " to #000000");
+ //XposedBridge.log("Changed ClipDrawable Background Color of Resource Name: " + resourceName + " to #000000");
}
} else if (background instanceof InsetDrawable) {
InsetDrawable insetDrawable = (InsetDrawable) background;
Drawable drawable = insetDrawable.getDrawable();
if (drawable instanceof ColorDrawable) {
((ColorDrawable) drawable).setColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed InsetDrawable Background Color of Resource Name: " + resourceName + " to #000000");
+ //XposedBridge.log("Changed InsetDrawable Background Color of Resource Name: " + resourceName + " to #000000");
}
} else if (background instanceof DrawableWrapper) {
DrawableWrapper drawableWrapper = (DrawableWrapper) background;
Drawable wrappedDrawable = drawableWrapper.getDrawable();
if (wrappedDrawable instanceof ColorDrawable) {
((ColorDrawable) wrappedDrawable).setColor(Color.parseColor("#000000"));
- XposedBridge.log("Changed DrawableWrapper Background Color for Resource Name: " + resourceName + " to #000000");
+ //XposedBridge.log("Changed DrawableWrapper Background Color for Resource Name: " + resourceName + " to #000000");
}
} else if (background instanceof NinePatchDrawable) {
NinePatchDrawable ninePatchDrawable = (NinePatchDrawable) background;
- XposedBridge.log("NinePatchDrawable background, color change not directly supported.");
- } else if (background instanceof GradientDrawable) {
- // GradientDrawable の場合、色を変更する
- GradientDrawable gradientDrawable = (GradientDrawable) background;
- gradientDrawable.setColor(Color.parseColor("#000000")); // 背景色を #000000 に変更
- XposedBridge.log("Changed GradientDrawable Background Color of Resource Name: " + resourceName + " to #000000");
- } else if (background instanceof StateListDrawable) {
+ //XposedBridge.log("NinePatchDrawable background, color change not directly supported.");
+ } else if (background instanceof StateListDrawable) {
StateListDrawable stateListDrawable = (StateListDrawable) background;
- XposedBridge.log("StateListDrawable background detected for Resource Name: " + resourceName);
+ //XposedBridge.log("StateListDrawable background detected for Resource Name: " + resourceName);
// 必要に応じて状態ごとの処理を追加
} else {
- XposedBridge.log("Unknown background type for Resource Name: " + resourceName + ", Class Name: " + background.getClass().getName());
+ //XposedBridge.log("Unknown background type for Resource Name: " + resourceName + ", Class Name: " + background.getClass().getName());
}
} else {
- XposedBridge.log("Background is null for Resource Name: " + resourceName);
+ //XposedBridge.log("Background is null for Resource Name: " + resourceName);
}
} catch (Resources.NotFoundException e) {
- XposedBridge.log("Resource name not found for View ID: " + view.getId());
+ //XposedBridge.log("Resource name not found for View ID: " + view.getId());
} finally {
isChangingColor = false; // Reset the flag after the method execution
}
@@ -576,7 +599,7 @@ public class NaviColor implements IHook {
int viewId = view.getId();
if (viewId != View.NO_ID) {
String resourceName = view.getContext().getResources().getResourceEntryName(viewId);
- XposedBridge.log("Resource Name: " + resourceName);
+ //XposedBridge.log("Resource Name: " + resourceName);
}
// ビューが ViewGroup の場合、その子ビューを再帰的に探索
@@ -595,7 +618,7 @@ public class NaviColor implements IHook {
try {
return view.getResources().getResourceEntryName(viewId);
} catch (Resources.NotFoundException e) {
- XposedBridge.log("Resource not found for View ID: " + viewId);
+ //XposedBridge.log("Resource not found for View ID: " + viewId);
return "unknown";
}
}
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index d5fd395..a25d6a7 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -98,5 +98,5 @@
随時キャッシュを削除してクラッシュを予防
ミュートメッセージの無効化
登録しているグループ名の通知をオフにする
-
+ ナビゲーションのボタンの色を黒にする、ダークテーマをピュアダークにする
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fb65a77..52e966e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -92,7 +92,7 @@
サービスの項目を削除
送信したメッセージの既読者の確認
更新されたプロフィールを削除\n
- ナビゲーションのボタンの色を黒にする
+ ナビゲーションのボタンの色を黒にする、ダークテーマをピュアダークにする
LsPatch用「未読のまま閲覧」スイッチを表示
定期的にバックアップ\n
連続で通話がかかってこないとかからないように