添加 Hook 消息接收与本地调试模式,便于 LSPosed/Telegram 联调。

新增 HookMessageReceiver 与通知服务 Hook 上报链路,支持未登录本地监听;补充 build/install 脚本并忽略 platform-tools 与 xposed 构建产物。
This commit is contained in:
2026-07-02 12:36:08 +08:00
parent f0eebb834e
commit 7c80b7073a
14 changed files with 246 additions and 57 deletions

View File

@@ -0,0 +1,53 @@
package com.miraclegarden.smsmessage.service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import com.miraclegarden.smsmessage.Activity.NotificationActivity;
import com.miraclegarden.smsmessage.App;
import com.miraclegarden.smsmessage.MessageInfo;
/**
* 接收 Xposed 模块转发的消息(前台 Hook 通道)。
*/
public class HookMessageReceiver extends BroadcastReceiver {
public static final String ACTION_HOOK_MESSAGE = "com.miraclegarden.smsmessage.action.HOOK_MESSAGE";
public static final String EXTRA_PACKAGE_NAME = "packageName";
public static final String EXTRA_TITLE = "title";
public static final String EXTRA_CONTENT = "content";
public static final String EXTRA_TIMESTAMP = "timestamp";
public static final String EXTRA_SOURCE = "source";
@Override
public void onReceive(Context context, Intent intent) {
if (intent == null || !ACTION_HOOK_MESSAGE.equals(intent.getAction())) {
return;
}
String packageName = intent.getStringExtra(EXTRA_PACKAGE_NAME);
String title = intent.getStringExtra(EXTRA_TITLE);
String content = intent.getStringExtra(EXTRA_CONTENT);
long timestamp = intent.getLongExtra(EXTRA_TIMESTAMP, System.currentTimeMillis());
String source = intent.getStringExtra(EXTRA_SOURCE);
if (TextUtils.isEmpty(packageName) || TextUtils.isEmpty(content)) {
return;
}
MessageInfo messageInfo = App.getMessageByNotiList(context, packageName);
if (messageInfo == null) {
NotificationActivity.sendMessage("[Hook] 未配置监听: " + packageName);
return;
}
if (TextUtils.isEmpty(title)) {
title = messageInfo.getAppName();
}
NotificationActivity.sendMessage("[Hook/" + source + "] " + title + " " + content);
NotificationService.submitFromHook(context, messageInfo, title, content, timestamp);
}
}