Skip to content

Commit 0ceaf20

Browse files
committed
feat: update embedded settings and theme handling
1 parent 2478688 commit 0ceaf20

16 files changed

Lines changed: 812 additions & 214 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ captures/
1818

1919
# Temp
2020
analysis/
21+
.tools/
2122
docs/
2223

2324
# Keystore

CHANGELOG.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,21 @@
22

33
本项目版本号采用 `v主版本.次版本.修订版本` 格式。推送代码时,CI 会构建带日期和当日序号的版本并将 APK 保存在 Action 成品中;Release 工作流手动输入版本号后创建正式 Release,并在说明中列出 commit 更新内容。
44

5-
## [Unreleased]
5+
## 0.2.1
66

7-
## [0.2.0] - 未发布
7+
### 内嵌设置与主题
8+
- 小黑盒设置页入口改为直接渲染 BetterHeybox 面板,不再跳转独立设置 Activity
9+
- 修复内嵌面板因跨应用 Theme 资源混用导致的 `Resources$NotFoundException`
10+
- 支持小黑盒深色模式「打开 / 关闭 / 跟随系统」三态读取
11+
- 深色模式使用黑底白字,浅色模式使用白底黑字;切换后自动刷新入口和面板颜色
12+
- 入口注入前读取当前主题状态,避免设置页重载时出现颜色闪烁
13+
- 开关与退出按钮改用 Android 系统 Monet 色板取色
14+
15+
### 通用
16+
- 增加小黑盒目标版本 `1.3.393` 检测提示
17+
- 增加可选的「屏蔽更新」开关
18+
19+
## [0.2.0]
820

921
首个可分发版本。
1022

@@ -24,5 +36,4 @@
2436
- 修复拖动选择只能拉一行(选择时放行滚动容器触摸拦截)
2537

2638
### 通用
27-
- 不显示桌面图标(组件级禁用,可从小黑盒设置页入口进入)
2839
- 设置页「立即重启」:杀小黑盒后台进程 + LSPosed 热重载(无 root)

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# BetterHeybox
22

3-
小黑盒(Heybox)增强的 LSPosed 模块(libxposed Modern API 102)
3+
增强小黑盒(Heybox) LSPosed 模块。
44

55
## Note
6-
本应用基于小黑盒1.3.393上完成,低于此版本出现的问题不会进行处理
6+
本应用基于 [小黑盒 1.3.393](./HeyboxDownload/1.3.393.apk) 完成,低于此版本出现的问题不会进行处理
77

88
## 功能
99

10-
所有功能开关均可在模块自带设置界面(`SettingsActivity`)独立控制;
10+
所有功能开关均可在小黑盒「我的 → 设置 → 通用设置」中的`BetterHeybox 设置`入口直接在当前页面内打开模块面板。
1111
开关经 LSPosed **RemotePreferences** 跨进程同步,**广告过滤类开关即时生效**
1212

1313
### 广告过滤
@@ -18,25 +18,28 @@
1818
| 信息流广告|
1919
| 气泡广告 |
2020
| 角标广告 |
21-
| 推广贴 |
21+
| 部分推广贴 |
2222

2323
### 界面增强
2424

2525
- **底部导航栏优化**(需重启小黑盒生效):隐藏「首页 / 热点 / 游戏库 / 加号」;
2626
隐藏加号时联动隐藏「推荐」占位,剩余 tab 完全等分、无空白
2727
- **设置页入口注入**:小黑盒「我的 → 设置」页顶部自动插入 "BetterHeybox 设置" 入口,
28-
优先复用小黑盒 `SettingItemView` 样式(失败回退纯代码构建,深浅色均清晰)
28+
点击后直接在当前页面渲染模块设置面板,不启动独立设置页
29+
- **主题同步**:识别小黑盒深色模式的「打开 / 关闭 / 跟随系统」三种状态;
30+
深色为黑底白字,浅色为白底黑字,切换后自动刷新入口和面板
31+
- **系统 Monet 取色**:开关和退出按钮使用 Android 系统 Monet 色板
2932

3033
### 帖子增强
3134

32-
- **解除复制**:Hook 掉小黑盒自定义 `TextSelectHandler` 的长按拦截,
35+
- **解除复制**:Hook 小黑盒自定义 `TextSelectHandler` 的长按拦截,
3336
恢复安卓系统标准文本选择(长按正文弹「复制/全选」菜单,采用系统复制)
3437
- **拖动跨行选择修复**:文本选择激活时放行滚动容器的触摸拦截,选择手柄可跨行拖动
3538

3639
### 通用
3740

38-
- **不显示桌面图标**组件级禁用 `LaunchActivity`(立即生效),
39-
隐藏后仍可从小黑盒设置页注入的入口进入模块设置
41+
- **版本前置检测**检测小黑盒是否为目标版本 `1.3.393`,不匹配时显示提示
42+
- **屏蔽更新**:提供可选开关,屏蔽小黑盒更新入口
4043

4144
## 技术栈
4245

@@ -59,13 +62,10 @@ app/src/main/
5962
│ ├── MainModule.java # 模块入口
6063
│ ├── App.java # Application:连接框架服务、RemotePreferences 存取
6164
│ ├── SettingsActivity.java # 模块设置界面
62-
│ └── LaunchActivity.java # 桌面图标入口
6365
├── res/ # 设置页布局 / 字符串 / drawable
6466
└── resources/META-INF/xposed/ # 模块声明
6567
```
6668

67-
另有 `docs/`(开发前置准备文档)与 `analysis/`(逆向分析工作区,不入库)。
68-
6969
## 模块声明
7070

7171
不再使用 Manifest meta-data 与 `assets/xposed_init`,全部声明在 `META-INF/xposed/`
@@ -96,4 +96,4 @@ app/src/main/resources/META-INF/xposed/
9696
4. **看日志**`adb logcat -s BetterHeybox`(每个 Hook 安装成功/失败均有 ✔/✘ 日志)
9797

9898
# 免责声明
99-
本应用与清枫(北京)科技有限公司无关,仅学习研究小黑盒APP原理,请在下载后24h内删除
99+
本应用与清枫(北京)科技有限公司无关,仅学习研究小黑盒APP原理,请在下载后24h内删除

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,20 @@
2020
tools:ignore="MissingApplicationIcon">
2121

2222
<!--
23-
桌面图标入口(可被「不显示桌面图标」开关禁用)。
24-
隐藏后仍可通过 小黑盒设置 → BetterHeybox 设置 进入模块设置。
25-
-->
26-
<activity
27-
android:name=".LaunchActivity"
28-
android:exported="true"
29-
android:theme="@android:style/Theme.DeviceDefault.DayNight">
30-
<intent-filter>
31-
<action android:name="android.intent.action.MAIN" />
32-
<category android:name="android.intent.category.LAUNCHER" />
33-
</intent-filter>
34-
</activity>
35-
36-
<!--
37-
模块设置界面。exported=true:允许小黑盒进程(Hook 注入的入口)启动它。
38-
不设 LAUNCHER:由 LaunchActivity 作为桌面入口(可被开关禁用)。
23+
模块设置界面。由小黑盒内嵌入口使用;不提供独立桌面启动入口。
3924
-->
4025
<activity
4126
android:name=".SettingsActivity"
4227
android:exported="true"
4328
android:theme="@android:style/Theme.DeviceDefault.DayNight" />
29+
30+
<receiver
31+
android:name=".PreferenceReceiver"
32+
android:exported="true">
33+
<intent-filter>
34+
<action android:name="com.better.heybox.SET_BOOLEAN" />
35+
</intent-filter>
36+
</receiver>
4437
</application>
4538

4639
</manifest>

app/src/main/java/com/better/heybox/App.java

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package com.better.heybox;
22

33
import android.app.Application;
4-
import android.content.ComponentName;
54
import android.content.SharedPreferences;
6-
import android.content.pm.PackageManager;
75

86
import io.github.libxposed.service.XposedService;
97
import io.github.libxposed.service.XposedServiceHelper;
@@ -18,9 +16,6 @@ public class App extends Application implements XposedServiceHelper.OnServiceLis
1816
/** RemotePreferences 分组名(Hook 侧用同名读取) */
1917
public static final String PREFS_GROUP = "betterheybox";
2018

21-
/** 本地 UI 状态存储(用于桌面图标组件校正,不依赖 RemotePreferences 连接) */
22-
public static final String LOCAL_PREFS = "betterheybox_ui";
23-
2419
/** 功能开关 key */
2520
public static final String KEY_OPEN_SCREEN = "open_screen";
2621
public static final String KEY_FEED_AD = "feed_ad";
@@ -32,7 +27,7 @@ public class App extends Application implements XposedServiceHelper.OnServiceLis
3227
public static final String KEY_HIDE_TAB_GAME = "hide_tab_game";
3328
public static final String KEY_HIDE_ADD = "hide_add";
3429
public static final String KEY_COPY_POST = "copy_post";
35-
public static final String KEY_HIDE_ICON = "hide_icon";
30+
public static final String KEY_BLOCK_UPDATE = "block_update";
3631

3732
// 框架服务实例(volatile 保证跨线程可见)
3833
private static volatile XposedService sService;
@@ -41,31 +36,13 @@ public class App extends Application implements XposedServiceHelper.OnServiceLis
4136
public void onCreate() {
4237
super.onCreate();
4338
XposedServiceHelper.registerListener(this);
44-
syncDesktopIconState();
45-
}
46-
47-
/**
48-
* 校正桌面图标组件状态:与本地记录保持一致。
49-
* 防止「恢复图标」时残留 DISABLED(即使桌面未即时刷新,下次进程启动也会校正回 DEFAULT)。
50-
*/
51-
private void syncDesktopIconState() {
52-
try {
53-
boolean hide = getSharedPreferences(LOCAL_PREFS, MODE_PRIVATE)
54-
.getBoolean(KEY_HIDE_ICON, false);
55-
ComponentName cn = new ComponentName(this, "com.better.heybox.LaunchActivity");
56-
getPackageManager().setComponentEnabledSetting(cn,
57-
hide
58-
? PackageManager.COMPONENT_ENABLED_STATE_DISABLED
59-
: PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
60-
PackageManager.DONT_KILL_APP);
61-
} catch (Throwable t) {
62-
// 校正失败不影响主流程
63-
}
6439
}
6540

6641
@Override
6742
public void onServiceBind(XposedService service) {
6843
sService = service;
44+
PreferenceReceiver.tryFlush(this,
45+
getSharedPreferences("betterheybox_pending", MODE_PRIVATE));
6946
}
7047

7148
@Override

app/src/main/java/com/better/heybox/LaunchActivity.java

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)