From 86f3960300d0e78b5773f01ba94e667eac7674b7 Mon Sep 17 00:00:00 2001 From: Naccl Date: Sat, 15 Jan 2022 17:58:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=95=B4=E7=90=86=EF=BC=9A=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=A4=9A=E4=BD=99=E7=9A=84=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/idormy/sms/forwarder/model/vo/SmsHubVo.java | 6 +----- .../idormy/sms/forwarder/receiver/PhoneStateReceiver.java | 6 +----- .../idormy/sms/forwarder/receiver/SmsBroadcastReceiver.java | 6 +----- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsHubVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsHubVo.java index 0bea966a..b08adff2 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsHubVo.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsHubVo.java @@ -30,11 +30,7 @@ public class SmsHubVo implements Serializable { this.msgId = UUID.randomUUID().toString(); if (channel != null) { String simInfo = simId == 2 ? SettingUtil.getAddExtraSim2() : SettingUtil.getAddExtraSim1(); //自定义备注优先 - if (!simInfo.isEmpty()) { - simInfo = "SIM" + simId + ":" + simInfo; - } else { - simInfo = SimUtil.getSimInfo(simId); - } + simInfo = "SIM" + simId + ":" + simInfo; this.channel = simInfo; } this.content = content; diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.java b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.java index 335199bb..e9f14f3b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.java +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.java @@ -81,11 +81,7 @@ public class PhoneStateReceiver extends BroadcastReceiver { Log.d(TAG, "getSubscriptionId = " + callInfo.getSubscriptionId()); int simId = SimUtil.getSimIdBySubscriptionId(callInfo.getSubscriptionId()); String simInfo = simId == 2 ? SettingUtil.getAddExtraSim2() : SettingUtil.getAddExtraSim1(); //自定义备注优先 - if (!simInfo.isEmpty()) { - simInfo = "SIM" + simId + "_" + simInfo; - } else { - simInfo = SimUtil.getSimInfo(simId); - } + simInfo = "SIM" + simId + "_" + simInfo; if (TextUtils.isEmpty(name)) { List contacts = ContactHelper.getInstance().getContactByNumber(context, phoneNumber); diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsBroadcastReceiver.java b/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsBroadcastReceiver.java index 0cf2e0ec..9a894462 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsBroadcastReceiver.java +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsBroadcastReceiver.java @@ -53,11 +53,7 @@ public class SmsBroadcastReceiver extends BroadcastReceiver { //自定义备注优先 simInfo = simId == 2 ? SettingUtil.getAddExtraSim2() : SettingUtil.getAddExtraSim1(); - if (!simInfo.isEmpty()) { - simInfo = "SIM" + simId + "_" + simInfo; - } else { - simInfo = SimUtil.getSimInfo(simId); - } + simInfo = "SIM" + simId + "_" + simInfo; } catch (Exception e) { Log.e(TAG, "获取接收手机号失败:" + e.getMessage()); } From 96d9fa9f1e56db24ca985e23ba785f0c83ad1c57 Mon Sep 17 00:00:00 2001 From: Naccl Date: Sat, 15 Jan 2022 20:20:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E9=87=8D=E5=8F=91=E5=8F=91=E9=80=81=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84=E6=B6=88=E6=81=AF=20(#80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idormy/sms/forwarder/MainActivity.java | 16 ++++++ .../idormy/sms/forwarder/model/vo/LogVo.java | 4 +- .../idormy/sms/forwarder/sender/SendUtil.java | 55 +++++++++++++++++++ .../idormy/sms/forwarder/utils/LogUtil.java | 2 +- app/src/main/res/values-en/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 77 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java index 708047e7..4636c494 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java @@ -25,6 +25,7 @@ import androidx.appcompat.app.AppCompatActivity; import com.idormy.sms.forwarder.adapter.LogAdapter; import com.idormy.sms.forwarder.model.vo.LogVo; import com.idormy.sms.forwarder.sender.HttpServer; +import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.sender.SmsHubApiTask; import com.idormy.sms.forwarder.service.BatteryService; import com.idormy.sms.forwarder.service.FrontService; @@ -304,6 +305,21 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I Toast.makeText(MainActivity.this, R.string.delete_log_toast, Toast.LENGTH_SHORT).show(); dialog.dismiss(); }); + + //重发消息回调,重发失败也会触发 + Handler handler = new Handler(Looper.myLooper(), msg -> { + initTLogs(); + showList(logVos); + return true; + }); + //对于发送失败的消息添加重发按钮 + if (logVo.getForwardStatus() == 0) { + builder.setPositiveButton("重发消息", (dialog, which) -> { + Toast.makeText(MainActivity.this, R.string.resend_toast, Toast.LENGTH_SHORT).show(); + SendUtil.resendMsgByLog(MainActivity.this, handler, logVo); + dialog.dismiss(); + }); + } builder.show(); } diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/LogVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/LogVo.java index ec3746d0..061aef44 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/LogVo.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/LogVo.java @@ -7,6 +7,7 @@ import lombok.Data; @Data public class LogVo { private Long id; + private String type; private String from; private String content; private String simInfo; @@ -19,8 +20,9 @@ public class LogVo { public LogVo() { } - public LogVo(Long id, String from, String content, String simInfo, String time, String rule, int senderImageId, int forwardStatus, String forwardResponse) { + public LogVo(Long id, String type, String from, String content, String simInfo, String time, String rule, int senderImageId, int forwardStatus, String forwardResponse) { this.id = id; + this.type = type; this.from = from; this.content = content; this.simInfo = simInfo; diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java index db4658c8..e7cc7724 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java @@ -24,6 +24,7 @@ import com.idormy.sms.forwarder.model.vo.BarkSettingVo; import com.idormy.sms.forwarder.model.vo.DingDingSettingVo; import com.idormy.sms.forwarder.model.vo.EmailSettingVo; import com.idormy.sms.forwarder.model.vo.FeiShuSettingVo; +import com.idormy.sms.forwarder.model.vo.LogVo; import com.idormy.sms.forwarder.model.vo.PushPlusSettingVo; import com.idormy.sms.forwarder.model.vo.QYWXAppSettingVo; import com.idormy.sms.forwarder.model.vo.QYWXGroupRobotSettingVo; @@ -36,6 +37,9 @@ import com.idormy.sms.forwarder.utils.LogUtil; import com.idormy.sms.forwarder.utils.NetUtil; import com.idormy.sms.forwarder.utils.RuleUtil; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; public class SendUtil { @@ -77,6 +81,57 @@ public class SendUtil { } } + /** + * 从日志获取消息内容并尝试重发 + * 根据当前rule和sender来重发,而不是失败时设置的规则 + * + * @param context + * @param handler 回调,用于刷新日志列表 + * @param logVo 日志 + */ + public static void resendMsgByLog(Context context, Handler handler, LogVo logVo) { + Log.d(TAG, logVo.toString()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(); + try { + date = sdf.parse(logVo.getTime()); + } catch (ParseException e) { + Log.e(TAG, "SimpleDateFormat parse error", e); + } + SmsVo smsVo = new SmsVo(logVo.getFrom(), logVo.getContent(), date, logVo.getSimInfo()); + Log.d(TAG, "resendMsgByLog smsVo:" + smsVo); + + //从simInfo判断接收的是SIM1还是SIM2,获取不到时默认走ALL + String simInfo = smsVo.getSimInfo(); + String key = null; + if (simInfo.startsWith("SIM1")) { + key = "SIM1"; + } else if (simInfo.startsWith("SIM2")) { + key = "SIM2"; + } + + RuleUtil.init(context); + List ruleList = RuleUtil.getRule(null, key, logVo.getType()); + if (!ruleList.isEmpty()) { + SenderUtil.init(context); + for (RuleModel ruleModel : ruleList) { + //规则匹配发现需要发送 + try { + if (ruleModel.checkMsg(smsVo)) { + List senderModels = SenderUtil.getSender(ruleModel.getSenderId(), null); + for (SenderModel senderModel : senderModels) { + String smsTemplate = ruleModel.getSwitchSmsTemplate() ? ruleModel.getSmsTemplate() : ""; + String regexReplace = ruleModel.getSwitchRegexReplace() ? ruleModel.getRegexReplace() : ""; + SendUtil.senderSendMsg(handler, smsVo, senderModel, logVo.getId(), smsTemplate, regexReplace); + } + } + } catch (Exception e) { + Log.e(TAG, "resendMsgByLog: fail checkMsg:", e); + } + } + } + } + public static void sendMsgByRuleModelSenderId(final Handler handError, RuleModel ruleModel, SmsVo smsVo, Long senderId) throws Exception { if (senderId == null) { throw new Exception("先新建并选择发送通道"); diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java index 0929838d..fb3c9bec 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java @@ -198,7 +198,7 @@ public class LogUtil { if (senderName != null) rule += senderName.trim(); int senderImageId = SenderModel.getImageId(senderType); - LogVo logVo = new LogVo(itemId, itemFrom, content, simInfo, time, rule, senderImageId, forwardStatus, forwardResponse); + LogVo logVo = new LogVo(itemId, type, itemFrom, content, simInfo, time, rule, senderImageId, forwardStatus, forwardResponse); LogVos.add(logVo); } catch (Exception e) { Log.e(TAG, "getLog e:" + e.getMessage()); diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 78a3dc38..60e2f2f5 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -43,6 +43,7 @@ Delete confirmation Are you sure to delete this log entry? The log entry is deleted. + Resending Details Are you sure to clear all forwarding logs? Pull to refresh. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index be2fa008..8451b1b1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -43,6 +43,7 @@ 日志删除确认 确定删除该条日志记录? 该条日志记录已经删除! + 正在重发 详情 确定要清空转发记录吗? 下拉可以刷新!