diff --git a/app/build.gradle b/app/build.gradle
index c05e870..ba75959 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,8 +9,8 @@ android {
defaultConfig {
minSdk 28
targetSdk 34
- versionCode 15
- versionName "1.10.1"
+ versionCode 16
+ versionName "1.11.0-rc1"
multiDexEnabled false
proguardFiles += 'proguard-rules.pro'
buildConfigField 'String', 'HOOK_TARGET_VERSION', '"141600311"'
diff --git a/app/src/main/java/io/github/chipppppppppp/lime/LimeOptions.java b/app/src/main/java/io/github/chipppppppppp/lime/LimeOptions.java
index da1238f..ce61fa7 100644
--- a/app/src/main/java/io/github/chipppppppppp/lime/LimeOptions.java
+++ b/app/src/main/java/io/github/chipppppppppp/lime/LimeOptions.java
@@ -23,6 +23,7 @@ public class LimeOptions {
public Option removeRecommendation = new Option("remove_recommendation", R.string.switch_remove_recommendation, true);
public Option removePremiumRecommendation = new Option("remove_premium_recommendation", R.string.switch_remove_premium_recommendation, true);
public Option removeServiceLabels = new Option("remove_service_labels", R.string.switch_remove_service_labels, false);
+ public Option removeAllServices = new Option("remove_services", R.string.switch_remove_service, false);
public Option removeReplyMute = new Option("remove_reply_mute", R.string.switch_remove_reply_mute, true);
public Option redirectWebView = new Option("redirect_webview", R.string.switch_redirect_webview, true);
public Option openInBrowser = new Option("open_in_browser", R.string.switch_open_in_browser, false);
@@ -37,27 +38,28 @@ public class LimeOptions {
public Option callTone = new Option("call_tone", R.string.call_tone, false);
public Option[] options = {
- removeVoom,
- removeWallet,
- removeNewsOrCall,
- distributeEvenly,
- extendClickableArea,
- removeIconLabels,
- removeAds,
- removeRecommendation,
- removePremiumRecommendation,
- removeServiceLabels,
- removeReplyMute,
- redirectWebView,
- openInBrowser,
- preventMarkAsRead,
- preventUnsendMessage,
- archived,
- sendMuteMessage,
- removeKeepUnread,
- blockTracking,
- stopVersionCheck,
- outputCommunication,
- callTone
+ removeVoom,
+ removeWallet,
+ removeNewsOrCall,
+ distributeEvenly,
+ extendClickableArea,
+ removeIconLabels,
+ removeAds,
+ removeRecommendation,
+ removePremiumRecommendation,
+ removeServiceLabels,
+ removeAllServices,
+ removeReplyMute,
+ redirectWebView,
+ openInBrowser,
+ preventMarkAsRead,
+ preventUnsendMessage,
+ archived,
+ sendMuteMessage,
+ removeKeepUnread,
+ blockTracking,
+ stopVersionCheck,
+ outputCommunication,
+ callTone
};
}
diff --git a/app/src/main/java/io/github/chipppppppppp/lime/hooks/KeepUnread.java b/app/src/main/java/io/github/chipppppppppp/lime/hooks/KeepUnread.java
index c5b540e..b54363e 100644
--- a/app/src/main/java/io/github/chipppppppppp/lime/hooks/KeepUnread.java
+++ b/app/src/main/java/io/github/chipppppppppp/lime/hooks/KeepUnread.java
@@ -23,98 +23,52 @@ import io.github.chipppppppppp.lime.LimeOptions;
import io.github.chipppppppppp.lime.R;
public class KeepUnread implements IHook {
- static boolean keepUnread = false;
@Override
public void hook(LimeOptions limeOptions, XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
if (limeOptions.removeKeepUnread.checked) return;
- XposedBridge.hookAllConstructors(
- loadPackageParam.classLoader.loadClass("jp.naver.line.android.common.view.listview.PopupListView"),
- new XC_MethodHook() {
- @Override
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
- ViewGroup viewGroup = (ViewGroup) param.thisObject;
- Context context = viewGroup.getContext();
- context.getApplicationContext().createPackageContext(Constants.MODULE_NAME, Context.CONTEXT_IGNORE_SECURITY);
+ Class> hookTarget;
+ hookTarget = loadPackageParam.classLoader.loadClass("jp.naver.line.android.common.view.listview.PopupListView");
+ XposedBridge.hookAllConstructors(hookTarget, new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
- Context moduleContext = context.getApplicationContext().createPackageContext(Constants.MODULE_NAME, Context.CONTEXT_IGNORE_SECURITY);
- String textKeepUnread = moduleContext.getResources().getString(R.string.switch_keep_unread);
+ ViewGroup viewGroup = (ViewGroup) param.thisObject;
+ Context context = viewGroup.getContext();
+ Context moduleContext = context.getApplicationContext().createPackageContext(Constants.MODULE_NAME, Context.CONTEXT_IGNORE_SECURITY);
+ String textKeepUnread = moduleContext.getResources().getString(R.string.switch_keep_unread);
+ RelativeLayout layout = new RelativeLayout(context);
+ RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
+ RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
+ layout.setLayoutParams(layoutParams);
- keepUnread = readStateFromFile(context);
+ Switch switchView = new Switch(context);
+ switchView.setText(textKeepUnread);
+ RelativeLayout.LayoutParams switchParams = new RelativeLayout.LayoutParams(
+ RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
+ switchParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
- RelativeLayout container = new RelativeLayout(context);
- RelativeLayout.LayoutParams containerParams = new RelativeLayout.LayoutParams(
- RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
- container.setLayoutParams(containerParams);
+ switchView.setChecked(false);
+ switchView.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ });
- GradientDrawable background = new GradientDrawable();
- background.setShape(GradientDrawable.RECTANGLE);
- background.setColor(Color.parseColor("#06C755"));
- background.setCornerRadii(new float[]{100, 100, 80, 30, 100, 100, 80, 30});
- container.setBackground(background);
+ layout.addView(switchView, switchParams);
- TextView label = new TextView(context);
- label.setText(textKeepUnread);
- label.setTextSize(18);
- label.setTextColor(Color.WHITE);
- label.setId(View.generateViewId());
- RelativeLayout.LayoutParams labelParams = new RelativeLayout.LayoutParams(
- RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
- labelParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
- labelParams.setMargins(40, 0, 0, 0);
- container.addView(label, labelParams);
-
- Switch switchView = new Switch(context);
- RelativeLayout.LayoutParams switchParams = new RelativeLayout.LayoutParams(
- RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
- switchParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
- switchParams.setMargins(0, 0, 40, 0);
- switchView.setChecked(keepUnread);
- switchView.setOnCheckedChangeListener((buttonView, isChecked) -> {
- keepUnread = isChecked;
- saveStateToFile(context, isChecked);
- });
-
- container.addView(switchView, switchParams);
-
- ((ListView) viewGroup.getChildAt(0)).addFooterView(container);
- }
- }
- );
+ ((ListView) viewGroup.getChildAt(0)).addFooterView(layout);
+ }
+ });
+
XposedHelpers.findAndHookMethod(
loadPackageParam.classLoader.loadClass(Constants.MARK_AS_READ_HOOK.className),
Constants.MARK_AS_READ_HOOK.methodName,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- if (keepUnread) {
param.setResult(null);
- }
}
}
);
}
- private void saveStateToFile(Context context, boolean state) {
- String filename = "keep_unread_state.txt";
- try (FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE)) {
- fos.write((state ? "1" : "0").getBytes());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- private boolean readStateFromFile(Context context) {
- String filename = "keep_unread_state.txt";
- try (FileInputStream fis = context.openFileInput(filename)) {
- int c;
- StringBuilder sb = new StringBuilder();
- while ((c = fis.read()) != -1) {
- sb.append((char) c);
- }
- return "1".equals(sb.toString());
- } catch (IOException e) {
- e.printStackTrace();
- return false;
- }
- }
+
}
diff --git a/app/src/main/java/io/github/chipppppppppp/lime/hooks/RemoveFlexibleContents.java b/app/src/main/java/io/github/chipppppppppp/lime/hooks/RemoveFlexibleContents.java
index 493462d..7d5116f 100644
--- a/app/src/main/java/io/github/chipppppppppp/lime/hooks/RemoveFlexibleContents.java
+++ b/app/src/main/java/io/github/chipppppppppp/lime/hooks/RemoveFlexibleContents.java
@@ -24,16 +24,17 @@ public class RemoveFlexibleContents implements IHook {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
Context context = (Context) param.thisObject;
- recommendationResId = context.getResources().getIdentifier("home_tab_contents_recommendation_placement", "id", context.getPackageName());
- serviceNameResId = context.getResources().getIdentifier("home_tab_service_name", "id", context.getPackageName());
- notificationResId = context.getResources().getIdentifier("notification_hub_row_rolling_view_group", "id", context.getPackageName());
- serviceRowContainerResId = context.getResources().getIdentifier("service_row_container", "id", context.getPackageName());
- serviceIconResId = context.getResources().getIdentifier("home_tab_service_icon", "id", context.getPackageName());
- serviceCarouselResId = context.getResources().getIdentifier("home_tab_service_carousel", "id", context.getPackageName());
- serviceTitleBackgroundResId = context.getResources().getIdentifier("home_tab_service_title_background", "id", context.getPackageName());
- serviceTitleResId = context.getResources().getIdentifier("home_tab_service_title", "id", context.getPackageName());
- serviceSeeMoreResId = context.getResources().getIdentifier("home_tab_service_see_more", "id", context.getPackageName());
- serviceSeeMoreBadgeResId = context.getResources().getIdentifier("home_tab_service_see_more_badge", "id", context.getPackageName());
+
+ recommendationResId = getIdByName(context, "home_tab_contents_recommendation_placement");
+ serviceNameResId = getIdByName(context, "home_tab_service_name");
+ notificationResId = getIdByName(context, "notification_hub_row_rolling_view_group");
+ serviceRowContainerResId = getIdByName(context, "service_row_container");
+ serviceIconResId = getIdByName(context, "home_tab_service_icon");
+ serviceCarouselResId = getIdByName(context, "home_tab_service_carousel");
+ serviceTitleBackgroundResId = getIdByName(context, "home_tab_service_title_background");
+ serviceTitleResId = getIdByName(context, "home_tab_service_title");
+ serviceSeeMoreResId = getIdByName(context, "home_tab_service_see_more");
+ serviceSeeMoreBadgeResId = getIdByName(context, "home_tab_service_see_more_badge");
}
}
);
@@ -42,22 +43,23 @@ public class RemoveFlexibleContents implements IHook {
View.class,
"onAttachedToWindow",
new XC_MethodHook() {
+ View view;
+
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- View view = (View) param.thisObject;
- int viewId = view.getId();
- //String resourceName = getResourceName(view.getContext(), viewId);
- //XposedBridge.log("View ID: " + viewId + ", Resource Name: " + resourceName);
+ view = (View) param.thisObject;
+ int viewId = view.getId();
if (limeOptions.removeRecommendation.checked && viewId == recommendationResId
|| limeOptions.removeServiceLabels.checked && viewId == serviceNameResId
- || viewId == serviceRowContainerResId
+ || limeOptions.removeAllServices.checked && (viewId == serviceRowContainerResId
|| viewId == serviceIconResId
|| viewId == serviceCarouselResId
|| viewId == serviceTitleBackgroundResId
|| viewId == serviceTitleResId
|| viewId == serviceSeeMoreResId
- || viewId == serviceSeeMoreBadgeResId) {
+ || viewId == serviceSeeMoreBadgeResId))
+ {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height = 0;
view.setLayoutParams(layoutParams);
@@ -70,9 +72,8 @@ public class RemoveFlexibleContents implements IHook {
);
}
- /*
- private String getResourceName(Context context, int resourceId) {
- return context.getResources().getResourceEntryName(resourceId);
+ private int getIdByName(Context context, String resourceName) {
+ return context.getResources().getIdentifier(resourceName, "id", context.getPackageName());
}
- */
+
}
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 1e5b57e..d42bff7 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -37,6 +37,7 @@
おすすめを削除
LYP プレミアムのおすすめを削除
サービスのラベルを削除
+ サービスの項目を削除
通知から \"通知をオフ\" アクションを削除
WebView を既定のブラウザにリダイレクト
ブラウザアプリで開く
@@ -52,6 +53,7 @@
コピー
ペースト
着信音を鳴らす(LSPatch用)
+
未読のまま閲覧
@@ -74,5 +76,5 @@
本当に削除しますか?
何もバックアップされていません
正しく取得できませんでした。\nアプリを再起動してください
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f998639..53f5dee 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -38,6 +38,7 @@
Remove recommendations
Remove LYP Premium recommendations
Remove tbe service labels
+ Remove services item
Remove the \"Mute chat\" action from notifications
Redirect WebView to the default browser
Open in the browser app