Files
notiMessage/app/src/main/res/layout/activity_notification.xml
Mars 125dfe583b feat: Telegram 双通道抓取、PC 调试台与 Hook 后台转发修复
v2.2.1 更新说明:

- 新增 xposed-module(Telegram/微信/SQLite Hook),双 APK + LSPosed 作用域

- HookMessageReceiver 后台直接 DebugForwarder + goAsync,修复 notiMessage 退后台丢消息

- MessageLogStore 日志持久化;AppConfig 调试/上传开关;PC 调试台 debug-server

- 健康检查去掉联网限制;通知/Hook 通道增加诊断日志

- 安装脚本 install-full/configure-lsposed/start-debug-server;文档 CHANGELOG + HOOK_GUIDE
2026-07-02 16:50:12 +08:00

198 lines
6.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#F5F5F5">
<!-- 顶部栏 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@color/purple_500"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
<ImageView
android:id="@+id/iv_back"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_action_back" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="监听控制台"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户"
android:textColor="#E0E0E0"
android:textSize="14sp" />
</LinearLayout>
<!-- 状态栏 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
<TextView
android:id="@+id/tv_status"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="状态: 未启动"
android:textColor="#888888"
android:textSize="14sp" />
<Button
android:id="@+id/btn_settings"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:text="设置"
android:textSize="12sp"
android:textColor="@color/white"
android:backgroundTint="#FF3700B3" />
</LinearLayout>
<!-- 统计栏 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:background="@color/white"
android:gravity="center"
android:orientation="horizontal"
android:padding="12dp">
<TextView
android:id="@+id/tv_configured_apps"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="已配置: 0个"
android:textColor="#333333"
android:textSize="14sp" />
<View
android:layout_width="1dp"
android:layout_height="20dp"
android:background="#DDDDDD" />
<TextView
android:id="@+id/tv_monitored_count"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="已抓取: 0"
android:textColor="#333333"
android:textSize="14sp" />
<View
android:layout_width="1dp"
android:layout_height="20dp"
android:background="#DDDDDD" />
<TextView
android:id="@+id/tv_uploaded_count"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="上传: 0"
android:textColor="#333333"
android:textSize="14sp" />
<View
android:layout_width="1dp"
android:layout_height="20dp"
android:background="#DDDDDD" />
<TextView
android:id="@+id/tv_success_rate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="成功率: --"
android:textColor="#333333"
android:textSize="14sp" />
</LinearLayout>
<!-- 日志区域 -->
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:background="@color/white"
android:fillViewport="true"
android:padding="12dp">
<TextView
android:id="@+id/tv_log"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#333333"
android:textSize="13sp"
android:fontFamily="monospace"
android:textIsSelectable="true" />
</androidx.core.widget.NestedScrollView>
<!-- 底部按钮 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="horizontal"
android:padding="16dp">
<Button
android:id="@+id/btn_clear_log"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:layout_marginEnd="8dp"
android:text="清空日志"
android:textColor="#666666"
android:backgroundTint="#EEEEEE" />
<Button
android:id="@+id/btn_toggle_monitor"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:text="开始监听"
android:textColor="@color/white"
android:backgroundTint="@color/purple_500" />
</LinearLayout>
</LinearLayout>