From f34b404adbf0aadf1fa453b7d5cdeef01c223d0c Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Sun, 3 Apr 2022 17:17:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=EF=BC=9A=E4=B8=BB=E5=8A=A8?= =?UTF-8?q?=E8=BD=AE=E8=AF=A2=E8=BF=9C=E7=A8=8B=20SmsHub=20Api=EF=BC=88?= =?UTF-8?q?=E4=BB=85=E4=BF=9D=E7=95=99=E6=9C=AC=E5=9C=B0=20HttpServer?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 +- README_en.md | 15 +- .../idormy/sms/forwarder/MainActivity.java | 11 -- .../idormy/sms/forwarder/SettingActivity.java | 24 --- .../sms/forwarder/model/vo/CloneInfoVo.java | 2 - .../idormy/sms/forwarder/model/vo/ResVo.java | 1 - .../sms/forwarder/model/vo/SmsHubVo.java | 2 - .../sms/forwarder/receiver/BaseServlet.java | 149 ++++++++++++------ .../receiver/PhoneStateReceiver.java | 7 - .../receiver/SmsBroadcastReceiver.java | 11 -- .../sender/BatteryReportCronTask.java | 7 - .../sms/forwarder/sender/HttpServer.java | 46 +++--- .../sms/forwarder/sender/SmsHubApiTask.java | 105 ------------ .../sms/forwarder/service/BatteryService.java | 7 - .../sms/forwarder/service/NotifyService.java | 7 - .../sms/forwarder/utils/CloneUtils.java | 2 - .../idormy/sms/forwarder/utils/Define.java | 2 - .../com/idormy/sms/forwarder/utils/Lamda.java | 1 + .../sms/forwarder/utils/SettingUtil.java | 16 -- .../forwarder/utils/SmsHubActionHandler.java | 144 ----------------- app/src/main/res/layout/activity_clone.xml | 1 - app/src/main/res/layout/activity_setting.xml | 47 ------ app/src/main/res/values-en/strings.xml | 2 - app/src/main/res/values/strings.xml | 2 - 24 files changed, 129 insertions(+), 494 deletions(-) delete mode 100644 app/src/main/java/com/idormy/sms/forwarder/sender/SmsHubApiTask.java delete mode 100644 app/src/main/java/com/idormy/sms/forwarder/utils/SmsHubActionHandler.java diff --git a/README.md b/README.md index 2d8ef2b2..e36dc9c2 100644 --- a/README.md +++ b/README.md @@ -88,20 +88,14 @@ - [x] 转发规则上支持配置正则替换内容 - [x] 转发到 Gotify发送通道(自主推送通知服务) - [x] 被动接收本地 HttpServer -- [x] 主动轮询远程 SmsHub Api +- [x] 主动轮询远程 SmsHub Api(v2.5.0+已删除) - [x] 适配暗夜模式 -------- ### 应用截图: -| 前台服务常驻状态栏 | 应用主界面 | 发送通道 | 转发规则 | -| :--: | :--: | :--: | :--: | -| ![前台服务常驻状态栏](pic/taskbar.jpg "前台服务常驻状态栏") | ![应用主界面](pic/main.jpg "应用主界面") | ![发送通道](pic/sender.png "发送通道") | ![转发规则](pic/rule.jpg "转发规则") | -| 转发规则--短信转发 | 转发规则--通话记录 | 转发规则--APP通知 | 转发日志详情 | -| ![短信转发](pic/rule_sms.jpg "短信转发") | ![通话转发](pic/rule_call.jpg "通话转发") | ![通知转发](pic/rule_app.jpg "通知转发") | ![转发日志详情](pic/maindetail.jpg "转发日志详情") | -| 设置界面--总开关 | 设置界面--电量监控&保活措施 | 设置界面--个性设置 | 一键克隆(配置导出导入) | -| ![设置界面--总开关](pic/setting_1.jpg "设置界面--总开关") | ![设置界面--电量监控&保活措施](pic/setting_2.jpg "设置界面--电量监控&保活措施") | ![设置界面--个性设置](pic/setting_3.jpg "设置界面--个性设置") | ![配置导出导入功能(一键克隆)](pic/clone.jpg "配置导出导入功能(一键克隆)") | +| 前台服务常驻状态栏 | 应用主界面 | 发送通道 | 转发规则 | | :--: | :--: | :--: | :--: | | ![前台服务常驻状态栏](pic/taskbar.jpg "前台服务常驻状态栏") | ![应用主界面](pic/main.jpg "应用主界面") | ![发送通道](pic/sender.png "发送通道") | ![转发规则](pic/rule.jpg "转发规则") | | 转发规则--短信转发 | 转发规则--通话记录 | 转发规则--APP通知 | 转发日志详情 | | ![短信转发](pic/rule_sms.jpg "短信转发") | ![通话转发](pic/rule_call.jpg "通话转发") | ![通知转发](pic/rule_app.jpg "通知转发") | ![转发日志详情](pic/maindetail.jpg "转发日志详情") | | 设置界面--总开关 | 设置界面--电量监控&保活措施 | 设置界面--个性设置 | 一键克隆(配置导出导入) | | ![设置界面--总开关](pic/setting_1.jpg "设置界面--总开关") | ![设置界面--电量监控&保活措施](pic/setting_2.jpg "设置界面--电量监控&保活措施") | ![设置界面--个性设置](pic/setting_3.jpg "设置界面--个性设置") | ![配置导出导入功能(一键克隆)](pic/clone.jpg "配置导出导入功能(一键克隆)") | 更多截图参见 https://github.com/pppscn/SmsForwarder/wiki @@ -127,7 +121,7 @@ + https://github.com/alibaba/fastjson (Json解析) + https://github.com/getActivity/XXPermissions (权限请求框架) + https://github.com/Xcreen/RestSMS (被动接收本地API方案) -+ https://github.com/juancrescente/SMSHub (主动轮询远程API方案) ++ ~~https://github.com/juancrescente/SMSHub (主动轮询远程API方案,v2.5.0+删除)~~ + [GitHub license](https://jb.gg/OpenSourceSupport) (License Certificate for JetBrains All Products Pack) -------- diff --git a/README_en.md b/README_en.md index e255017e..beea516e 100644 --- a/README_en.md +++ b/README_en.md @@ -1,7 +1,7 @@ - ![SmsForwarder](pic/SmsForwarder.png) # SmsForwarder + [中文版](README.md) [![GitHub release](https://img.shields.io/github/release/pppscn/SmsForwarder.svg)](https://github.com/pppscn/SmsForwarder/releases) [![GitHub stars](https://img.shields.io/github/stars/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/stargazers) [![GitHub forks](https://img.shields.io/github/forks/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/network/members) [![GitHub issues](https://img.shields.io/github/issues/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/issues) [![GitHub license](https://img.shields.io/github/license/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/blob/main/LICENSE) @@ -90,19 +90,14 @@ Benefit by simplicity: - [x] Support for variables in regular expression of forwarding rules; - [x] 转发到 Gotify发送通道(自主推送通知服务) - [x] 被动接收本地 HttpServer -- [x] 主动轮询远程 SmsHub Api +- [x] 主动轮询远程 SmsHub Api(v2.5.0+已删除) +- [x] 适配暗夜模式 -------- ### Screenshots : -| 前台服务常驻状态栏 | 应用主界面 | 发送通道 | 转发规则 | -| :--: | :--: | :--: | :--: | -| ![前台服务常驻状态栏](pic/taskbar.jpg "前台服务常驻状态栏") | ![应用主界面](pic/main.jpg "应用主界面") | ![发送通道](pic/sender.png "发送通道") | ![转发规则](pic/rule.jpg "转发规则") | -| 转发规则--短信转发 | 转发规则--通话记录 | 转发规则--APP通知 | 转发日志详情 | -| ![短信转发](pic/rule_sms.jpg "短信转发") | ![通话转发](pic/rule_call.jpg "通话转发") | ![通知转发](pic/rule_app.jpg "通知转发") | ![转发日志详情](pic/maindetail.jpg "转发日志详情") | -| 设置界面--总开关 | 设置界面--电量监控&保活措施 | 设置界面--个性设置 | 一键克隆(配置导出导入) | -| ![设置界面--总开关](pic/setting_1.jpg "设置界面--总开关") | ![设置界面--电量监控&保活措施](pic/setting_2.jpg "设置界面--电量监控&保活措施") | ![设置界面--个性设置](pic/setting_3.jpg "设置界面--个性设置") | ![配置导出导入功能(一键克隆)](pic/clone.jpg "配置导出导入功能(一键克隆)") | +| 前台服务常驻状态栏 | 应用主界面 | 发送通道 | 转发规则 | | :--: | :--: | :--: | :--: | | ![前台服务常驻状态栏](pic/taskbar.jpg "前台服务常驻状态栏") | ![应用主界面](pic/main.jpg "应用主界面") | ![发送通道](pic/sender.png "发送通道") | ![转发规则](pic/rule.jpg "转发规则") | | 转发规则--短信转发 | 转发规则--通话记录 | 转发规则--APP通知 | 转发日志详情 | | ![短信转发](pic/rule_sms.jpg "短信转发") | ![通话转发](pic/rule_call.jpg "通话转发") | ![通知转发](pic/rule_app.jpg "通知转发") | ![转发日志详情](pic/maindetail.jpg "转发日志详情") | | 设置界面--总开关 | 设置界面--电量监控&保活措施 | 设置界面--个性设置 | 一键克隆(配置导出导入) | | ![设置界面--总开关](pic/setting_1.jpg "设置界面--总开关") | ![设置界面--电量监控&保活措施](pic/setting_2.jpg "设置界面--电量监控&保活措施") | ![设置界面--个性设置](pic/setting_3.jpg "设置界面--个性设置") | ![配置导出导入功能(一键克隆)](pic/clone.jpg "配置导出导入功能(一键克隆)") | 更多截图参见 https://github.com/pppscn/SmsForwarder/wiki @@ -128,7 +123,7 @@ Benefit by simplicity: + https://github.com/alibaba/fastjson (json parsing) + https://github.com/getActivity/XXPermissions (permission requiring) + https://github.com/Xcreen/RestSMS(被动接收本地API方案) -+ https://github.com/juancrescente/SMSHub(主动轮询远程API方案) ++ ~~https://github.com/juancrescente/SMSHub(主动轮询远程API方案,v2.5.0+删除)~~ + [GitHub license](https://jb.gg/OpenSourceSupport) (License Certificate for JetBrains All Products Pack) -------- 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 0352b3f2..90d35ae8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java @@ -36,7 +36,6 @@ import com.idormy.sms.forwarder.sender.BatteryReportCronTask; import com.idormy.sms.forwarder.sender.HttpServer; import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.sender.SenderUtil; -import com.idormy.sms.forwarder.sender.SmsHubApiTask; import com.idormy.sms.forwarder.service.BatteryService; import com.idormy.sms.forwarder.service.FrontService; import com.idormy.sms.forwarder.service.MusicService; @@ -139,16 +138,6 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I } } - //启用SmsHubApiTask - if (SettingUtil.getSwitchEnableSmsHubApi()) { - SmsHubApiTask.init(this); - try { - SmsHubApiTask.updateTimer(); - } catch (Exception e) { - Log.e(TAG, "SmsHubApiTask:", e); - } - } - //电池状态定时推送 if (SettingUtil.getSwitchEnableBatteryCron()) { try { diff --git a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java index e314bb1f..20a73bef 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java @@ -39,7 +39,6 @@ import com.idormy.sms.forwarder.receiver.RebootBroadcastReceiver; import com.idormy.sms.forwarder.sender.BatteryReportCronTask; import com.idormy.sms.forwarder.sender.HttpServer; import com.idormy.sms.forwarder.sender.SenderUtil; -import com.idormy.sms.forwarder.sender.SmsHubApiTask; import com.idormy.sms.forwarder.service.MusicService; import com.idormy.sms.forwarder.utils.CommonUtil; import com.idormy.sms.forwarder.utils.DbHelper; @@ -50,7 +49,6 @@ import com.idormy.sms.forwarder.utils.LogUtil; import com.idormy.sms.forwarder.utils.OnePixelManager; import com.idormy.sms.forwarder.utils.RuleUtil; import com.idormy.sms.forwarder.utils.SettingUtil; -import com.idormy.sms.forwarder.view.ClearEditText; import com.idormy.sms.forwarder.view.StepBar; import java.lang.reflect.Method; @@ -97,8 +95,6 @@ public class SettingActivity extends AppCompatActivity { //HttpServer switchEnableHttpServer(findViewById(R.id.switch_enable_http_server)); - //SmsHubApiTask - editSmsHubConfig(findViewById(R.id.switch_enable_sms_hub), findViewById(R.id.editText_text_sms_hub_url)); //监听电池状态变化 switchBatteryReceiver(findViewById(R.id.switch_battery_receiver)); @@ -352,26 +348,6 @@ public class SettingActivity extends AppCompatActivity { } } - //SmsHubApiTask - @SuppressLint("UseSwitchCompatOrMaterialCode") - private void editSmsHubConfig(Switch switch_enable_send_sms, ClearEditText editText_text_send_sms) { - switch_enable_send_sms.setChecked(SettingUtil.getSwitchEnableSmsHubApi()); - switch_enable_send_sms.setOnCheckedChangeListener((buttonView, isChecked) -> { - String webServer = editText_text_send_sms.getText().trim(); - if (isChecked && !CommonUtil.checkUrl(webServer, false)) { - HttpUtil.Toast(TAG, getString(R.string.invalid_webserver)); - switch_enable_send_sms.setChecked(false); - return; - } - SettingUtil.switchEnableSmsHubApi(isChecked); - Log.d(TAG, "switchEnableSendApi:" + isChecked); - SmsHubApiTask.updateTimer(); - }); - - editText_text_send_sms.setText(SettingUtil.getSmsHubApiUrl()); - editText_text_send_sms.setOnEditInputListener(content -> SettingUtil.smsHubApiUrl(content.trim())); - } - //HttpServer @SuppressLint("UseSwitchCompatOrMaterialCode") private void switchEnableHttpServer(Switch switch_enable_http_server) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/CloneInfoVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/CloneInfoVo.java index 52ed87cd..960bbc0b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/CloneInfoVo.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/CloneInfoVo.java @@ -24,7 +24,6 @@ public class CloneInfoVo implements Serializable { private boolean callType3; private boolean enableAppNotify; private boolean cancelAppNotify; - private String smsHubApiUrl; private int batteryLevelAlarmMin; private int batteryLevelAlarmMax; private boolean batteryLevelAlarmOnce; @@ -48,7 +47,6 @@ public class CloneInfoVo implements Serializable { ", callType3=" + callType3 + ", enableAppNotify=" + enableAppNotify + ", cancelAppNotify=" + cancelAppNotify + - ", smsHubApiUrl=" + smsHubApiUrl + ", batteryLevelAlarmMin=" + batteryLevelAlarmMin + ", batteryLevelAlarmMax=" + batteryLevelAlarmMax + ", batteryLevelAlarmOnce=" + batteryLevelAlarmOnce + diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/ResVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/ResVo.java index 3c32bdf9..8e3462a9 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/ResVo.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/ResVo.java @@ -10,7 +10,6 @@ public class ResVo { private int code; private String msg; private String auth; - private SmsHubVo heartbeat; private T data; public ResVo setSuessces(T data) { 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 a5bb56b4..8939da38 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 @@ -3,7 +3,6 @@ package com.idormy.sms.forwarder.model.vo; import androidx.annotation.NonNull; import com.alibaba.fastjson.JSON; -import com.idormy.sms.forwarder.sender.SmsHubApiTask; import com.idormy.sms.forwarder.utils.PhoneUtils; import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.utils.SimUtil; @@ -87,7 +86,6 @@ public class SmsHubVo implements Serializable { deviInfoMap.put("imei", PhoneUtils.getIMEI()); deviInfoMap.put("SDKVersion", PhoneUtils.getSDKVersion() + ""); deviInfoMap.put("Version", SettingUtil.getVersionName()); - deviInfoMap.put("heartbeat", SmsHubApiTask.DELAY_SECONDS + ""); cache.put(key, deviInfoMap); return deviInfoMap; } diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/BaseServlet.java b/app/src/main/java/com/idormy/sms/forwarder/receiver/BaseServlet.java index c19d77bf..3ee38b06 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/BaseServlet.java +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/BaseServlet.java @@ -7,11 +7,15 @@ import android.util.Log; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.util.IOUtils; +import com.idormy.sms.forwarder.model.LogModel; import com.idormy.sms.forwarder.model.vo.ResVo; import com.idormy.sms.forwarder.model.vo.SmsHubVo; import com.idormy.sms.forwarder.utils.CloneUtils; +import com.idormy.sms.forwarder.utils.HttpUtil; +import com.idormy.sms.forwarder.utils.LogUtil; import com.idormy.sms.forwarder.utils.SettingUtil; -import com.idormy.sms.forwarder.utils.SmsHubActionHandler; +import com.idormy.sms.forwarder.utils.SimUtil; +import com.idormy.sms.forwarder.utils.SmsUtil; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; @@ -38,47 +42,21 @@ import javax.servlet.http.HttpServletResponse; @MultipartConfig public class BaseServlet extends HttpServlet { - public static final int BUFFER_SIZE = 1 << 12; - public static final String CLONE_PATH = "/clone"; - public static final String SMSHUB_PATH = "/send_api"; - private static final long serialVersionUID = 1L; private static final String TAG = "BaseServlet"; - public static final SmsHubActionHandler.SmsHubMode smsHubMode = SmsHubActionHandler.SmsHubMode.server; - - public BaseServlet(String path, Context context) { - this.path = path; - this.context = context; - SettingUtil.init(context); - } + public static final int BUFFER_SIZE = 1 << 12; + private static final long serialVersionUID = 1L; + public static final long RULE_ID = -999L; + public static final String SMSHUB_PATH = "/send_api"; + public static final String CLONE_PATH = "/clone"; private final String path; @SuppressLint("StaticFieldLeak") private final Context context; - public static void addServlet(Server jettyServer, Context context) { - ServletContextHandler contextHandler = new ServletContextHandler(); - addHolder(contextHandler, new BaseServlet(BaseServlet.CLONE_PATH, context)); - addHolder(contextHandler, new BaseServlet(BaseServlet.SMSHUB_PATH, context)); - // addholder(contextHandler, new BaseServlet("/", context)); - jettyServer.setHandler(contextHandler); - } - - public static String read(Reader reader) throws IOException { - char[] buffer = new char[BUFFER_SIZE]; - int size; - StringBuilder sb = new StringBuilder(); - while ((size = reader.read(buffer)) != -1) { - char[] chars = new char[size]; - System.arraycopy(buffer, 0, chars, 0, size); - sb.append(chars); - } - return sb.toString(); - } - - private static void addHolder(ServletContextHandler servletContextHandler, BaseServlet baseServlet) { - ServletHolder servletHolder = new ServletHolder(baseServlet); - servletHolder.getRegistration().setMultipartConfig(new MultipartConfigElement(baseServlet.getContext().getCacheDir().getAbsolutePath() + File.pathSeparator + "jettyServer")); - servletContextHandler.addServlet(servletHolder, baseServlet.getPath()); + public BaseServlet(String path, Context context) { + this.path = path; + this.context = context; + SettingUtil.init(context); } public Context getContext() { @@ -89,6 +67,14 @@ public class BaseServlet extends HttpServlet { return path; } + public static void addServlet(Server jettyServer, Context context) { + ServletContextHandler contextHandler = new ServletContextHandler(); + addHolder(contextHandler, new BaseServlet(BaseServlet.CLONE_PATH, context)); + addHolder(contextHandler, new BaseServlet(BaseServlet.SMSHUB_PATH, context)); + // addholder(contextHandler, new BaseServlet("/", context)); + jettyServer.setHandler(contextHandler); + } + @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { String msg = "HTTP method POST is not supported by this URL"; @@ -123,18 +109,16 @@ public class BaseServlet extends HttpServlet { try { String read = read(reader); Log.i(TAG, "Request message:" + read); - SmsHubVo smsHubVo = SmsHubVo.heartbeatInstance(SmsHubActionHandler.getData(smsHubMode)); ResVo> result = ResVo.suessces(null); if (StringUtil.isNotBlank(read)) { ResVo> obj = JSON.parseObject(read, new TypeReference>>() { }.getType()); List data = obj.getData(); for (SmsHubVo vo : data) { - SmsHubActionHandler.handle(TAG, vo); + sendSms(TAG, vo); } result.setData(data); } - result.setHeartbeat(smsHubVo); resp.setContentType("application/json;charset=utf-8"); StringBuilder sb = new StringBuilder(); int i = 0; @@ -158,14 +142,6 @@ public class BaseServlet extends HttpServlet { } } - private void printErrMsg(HttpServletResponse resp, PrintWriter writer, Exception e) { - String text = "Internal server error: " + e.getMessage(); - Log.e(TAG, text); - resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType("application/json;charset=utf-8"); - writer.println(JSON.toJSONString(ResVo.error(text))); - } - //一键克隆——查询接口 private void clone_api(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setCharacterEncoding("utf-8"); @@ -202,4 +178,83 @@ public class BaseServlet extends HttpServlet { } } + //短信列表api + + //联系人api + + //查询通话记录api + + //查询电量api + + //规则列表api(增删改查) + + //发送通道api(增删改查) + + ///////////////////////////////////////////////////////////////////////////////////////////////////////// + + private static String read(Reader reader) throws IOException { + char[] buffer = new char[BUFFER_SIZE]; + int size; + StringBuilder sb = new StringBuilder(); + while ((size = reader.read(buffer)) != -1) { + char[] chars = new char[size]; + System.arraycopy(buffer, 0, chars, 0, size); + sb.append(chars); + } + return sb.toString(); + } + + private static void addHolder(ServletContextHandler servletContextHandler, BaseServlet baseServlet) { + ServletHolder servletHolder = new ServletHolder(baseServlet); + servletHolder.getRegistration().setMultipartConfig(new MultipartConfigElement(baseServlet.getContext().getCacheDir().getAbsolutePath() + File.pathSeparator + "jettyServer")); + servletContextHandler.addServlet(servletHolder, baseServlet.getPath()); + } + + private void printErrMsg(HttpServletResponse resp, PrintWriter writer, Exception e) { + String text = "Internal server error: " + e.getMessage(); + Log.e(TAG, text); + resp.setStatus(HttpServletResponse.SC_OK); + resp.setContentType("application/json;charset=utf-8"); + writer.println(JSON.toJSONString(ResVo.error(text))); + } + + private static void sendSms(String tag, SmsHubVo vo) { + boolean failure = true; + String msg = ""; + Long logId = null; + try { + if (SmsHubVo.Action.send.code().equals(vo.getAction())) { + vo.setType(SmsHubVo.Type.sms.code()); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) { + int subscriptionIdBySimId = SimUtil.getSubscriptionIdBySimId(Integer.parseInt(vo.getChannel()) - 1); + msg = SmsUtil.sendSms(subscriptionIdBySimId, vo.getTarget(), vo.getContent()); + String simInfo = "SIM" + (subscriptionIdBySimId + 1); + vo.setChannel(simInfo); + logId = LogUtil.addLog(new LogModel(vo.getType(), vo.getTarget(), vo.getContent(), simInfo, RULE_ID)); + if (msg == null) { + failure = false; + HttpUtil.Toast(tag, "短信发送成功"); + Log.i(tag, "短信发送成功"); + vo.setAction(SmsHubVo.Action.suessces.code()); + LogUtil.updateLog(logId, 2, SmsHubVo.Action.suessces.code()); + } + } else { + msg = "api<22"; + } + } + } catch (Exception e) { + msg += e.getMessage(); + e.printStackTrace(); + } + if (failure) { + msg = "短信发送失败:" + msg; + HttpUtil.Toast(tag, msg); + Log.i(tag, msg); + vo.setAction(SmsHubVo.Action.failure.code()); + vo.setErrMsg(msg); + if (logId != null) { + LogUtil.updateLog(logId, 0, msg); + } + } + } } 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 4dc4c668..93199a77 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 @@ -10,7 +10,6 @@ import android.util.Log; import com.idormy.sms.forwarder.R; import com.idormy.sms.forwarder.model.CallInfo; import com.idormy.sms.forwarder.model.PhoneBookEntity; -import com.idormy.sms.forwarder.model.vo.SmsHubVo; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.utils.CommonUtil; @@ -18,7 +17,6 @@ import com.idormy.sms.forwarder.utils.ContactHelper; import com.idormy.sms.forwarder.utils.PhoneUtils; import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.utils.SimUtil; -import com.idormy.sms.forwarder.utils.SmsHubActionHandler; import java.text.SimpleDateFormat; import java.util.Date; @@ -130,11 +128,6 @@ public class PhoneStateReceiver extends BroadcastReceiver { SmsVo smsVo = new SmsVo(phoneNumber, getTypeText(context, type, name, viaNumber), new Date(), simInfo); Log.d(TAG, "send_msg" + smsVo); SendUtil.send_msg(context, smsVo, simId, "call"); - - //SmsHubApi - if (SettingUtil.getSwitchEnableSmsHubApi()) { - SmsHubActionHandler.putData(new SmsHubVo(SmsHubVo.Type.phone, simId, getTypeText(context, type, name, viaNumber), phoneNumber)); - } } //获取通话类型:1.呼入 2.呼出 3.未接 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 39cb42e3..aff6b406 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 @@ -10,12 +10,10 @@ import android.util.Log; import androidx.annotation.RequiresApi; -import com.idormy.sms.forwarder.model.vo.SmsHubVo; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.utils.SimUtil; -import com.idormy.sms.forwarder.utils.SmsHubActionHandler; import java.util.ArrayList; import java.util.Date; @@ -93,15 +91,6 @@ public class SmsBroadcastReceiver extends BroadcastReceiver { Log.d(TAG, "SMS: " + smsVoList); SendUtil.send_msg_list(context, smsVoList, simId, "sms"); - - //SmsHubApi - if (SettingUtil.getSwitchEnableSmsHubApi()) { - List smsHubVos = new ArrayList<>(); - for (String mobile : mobileToContent.keySet()) { - smsHubVos.add(new SmsHubVo(SmsHubVo.Type.sms, simId, mobileToContent.get(mobile), mobile)); - } - SmsHubActionHandler.putData(smsHubVos.toArray(new SmsHubVo[0])); - } } } catch (Throwable throwable) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/BatteryReportCronTask.java b/app/src/main/java/com/idormy/sms/forwarder/sender/BatteryReportCronTask.java index 5b43510d..64a1bef2 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/sender/BatteryReportCronTask.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/BatteryReportCronTask.java @@ -6,11 +6,9 @@ import android.content.IntentFilter; import android.util.Log; import com.idormy.sms.forwarder.MyApplication; -import com.idormy.sms.forwarder.model.vo.SmsHubVo; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.utils.BatteryUtils; import com.idormy.sms.forwarder.utils.SettingUtil; -import com.idormy.sms.forwarder.utils.SmsHubActionHandler; import java.util.Calendar; import java.util.Date; @@ -91,11 +89,6 @@ public class BatteryReportCronTask { try { SmsVo smsVo = new SmsVo("88888888", msg, new Date(), "电池状态定时推送"); SendUtil.send_msg(context, smsVo, 1, "app"); - - //SmsHubApi - if (SettingUtil.getSwitchEnableSmsHubApi()) { - SmsHubActionHandler.putData(new SmsHubVo(SmsHubVo.Type.phone, null, msg, "电池状态定时推送")); - } } catch (Exception e) { Log.e(TAG, "sendMessage e:" + e.getMessage()); } diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/HttpServer.java b/app/src/main/java/com/idormy/sms/forwarder/sender/HttpServer.java index 5fb67f50..44ae0410 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/sender/HttpServer.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/HttpServer.java @@ -11,11 +11,9 @@ import com.idormy.sms.forwarder.receiver.BaseServlet; import com.idormy.sms.forwarder.utils.Define; import com.idormy.sms.forwarder.utils.NetUtil; import com.idormy.sms.forwarder.utils.SettingUtil; -import com.idormy.sms.forwarder.utils.SmsHubActionHandler; import org.eclipse.jetty.server.Server; - public class HttpServer { private static Boolean hasInit = false; private static Server jettyServer; @@ -23,7 +21,6 @@ public class HttpServer { private static Context context; private static long ts = 0L; - @SuppressLint("HandlerLeak") public static void init(Context context) { //noinspection SynchronizeOnNonFinalField @@ -32,7 +29,6 @@ public class HttpServer { hasInit = true; HttpServer.context = context; - SmsHubActionHandler.init(context); jettyServer = new Server(Define.HTTP_SERVER_PORT); BaseServlet.addServlet(jettyServer, context); } @@ -49,6 +45,17 @@ public class HttpServer { return false; } + /** + * Checks if Jetty is stopping + * boolean - True when server is stopping + */ + private synchronized static Boolean asStopp() { + if (jettyServer != null) { + return !(jettyServer.isRunning() || jettyServer.isStopping()); + } + return true; + } + public synchronized static boolean update() { //非WiFi网络下不可启用 if (NetUtil.NETWORK_WIFI != NetUtil.getNetWorkStatus()) { @@ -76,42 +83,25 @@ public class HttpServer { return true; } - /** - * Checks if Jetty is stopping - * boolean - True when server is stopping - */ - private synchronized static Boolean asStopp() { - if (jettyServer != null) { - return !(jettyServer.isRunning() || jettyServer.isStopping()); - } else { - return true; - } - } - private static void start() { stop(); Log.i("HttpServer", "start"); - //new Thread(() -> { try { - //Start Jetty jettyServer.start(); - //jettyServer.join(); } catch (Exception e) { e.printStackTrace(); } - //}).start(); } private static void stop() { - if (Boolean.FALSE.equals(asStopp())) { - try { - if (jettyServer != null) { - jettyServer.stop(); - //jettyServer = new Server(port); - } - } catch (Exception e) { - e.printStackTrace(); + if (asStopp()) return; + + try { + if (jettyServer != null) { + jettyServer.stop(); } + } catch (Exception e) { + e.printStackTrace(); } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SmsHubApiTask.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SmsHubApiTask.java deleted file mode 100644 index 568142bb..00000000 --- a/app/src/main/java/com/idormy/sms/forwarder/sender/SmsHubApiTask.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.idormy.sms.forwarder.sender; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.Log; - -import com.alibaba.fastjson.JSON; -import com.idormy.sms.forwarder.model.vo.SmsHubVo; -import com.idormy.sms.forwarder.utils.HttpUtil; -import com.idormy.sms.forwarder.utils.SettingUtil; -import com.idormy.sms.forwarder.utils.SmsHubActionHandler; - -import java.util.List; -import java.util.Objects; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.atomic.AtomicBoolean; - - -/** - * 主动发送短信轮询任务 - * - * @author xxc - * 2022/1/10 9:53 - */ -@SuppressWarnings("CodeBlock2Expr") -public class SmsHubApiTask extends TimerTask { - private static Boolean hasInit = false; - public static final long DELAY_SECONDS = 30; - private static final String TAG = "SmsHubApiTask"; - private static Timer sendApiTimer; - @SuppressLint("StaticFieldLeak") - private static Context context; - private static final SmsHubActionHandler.SmsHubMode smsHubMode = SmsHubActionHandler.SmsHubMode.client; - - - @SuppressLint("HandlerLeak") - public static void init(Context context) { - //noinspection SynchronizeOnNonFinalField - synchronized (hasInit) { - if (hasInit) return; - - hasInit = true; - SmsHubApiTask.context = context; - SmsHubActionHandler.init(SmsHubApiTask.context); - } - } - - @Override - public void run() { - List data = SmsHubActionHandler.getData(smsHubMode); - SmsHubVo smsHubVo = SmsHubVo.heartbeatInstance(data); - String url = SettingUtil.getSmsHubApiUrl(); - boolean asRetry = data != null && data.size() > 0; - AtomicBoolean isSusess = new AtomicBoolean(false); - Runnable runnable = () -> { - HttpUtil.asyncPostJson(TAG, url, smsHubVo, response -> { - //HttpUtil.Toast(TAG, "Response:" + response.code() + "," + responseStr); - if (response.code() == 200) { - isSusess.set(true); - String responseStr = Objects.requireNonNull(response.body()).string(); - List vos = JSON.parseArray(responseStr, SmsHubVo.class); - for (SmsHubVo vo : vos) { - SmsHubActionHandler.handle(TAG, vo); - } - SmsHubActionHandler.putData(smsHubMode, vos.toArray(new SmsHubVo[0])); - } - }, null, asRetry); - }; - if (asRetry) { - new Thread(runnable).start(); - } else { - runnable.run(); - } - } - - - public static void updateTimer() { - cancelTimer(); - if (SettingUtil.getSwitchEnableSmsHubApi()) { - SmsHubVo.getDevInfoMap(true); - startTimer(); - } else { - Log.d(TAG, "Cancel SmsHubApiTaskTimer"); - HttpUtil.Toast(TAG, "Cancel SmsHubApiTaskTimer"); - } - } - - private static void cancelTimer() { - if (sendApiTimer != null) { - sendApiTimer.cancel(); - sendApiTimer = null; - } - } - - private static void startTimer() { - Log.d(TAG, "Start SmsHubApiTimer"); - if (SettingUtil.getSwitchEnableSmsHubApi()) { - long seconds = SmsHubApiTask.DELAY_SECONDS; - Log.d(TAG, "SmsHubApiTimer started " + seconds); - sendApiTimer = new Timer("SmsHubApiTimer", true); - sendApiTimer.schedule(new SmsHubApiTask(), 3000, seconds * 1000); - } - } -} diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/BatteryService.java b/app/src/main/java/com/idormy/sms/forwarder/service/BatteryService.java index 70c7c264..6521550c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/service/BatteryService.java +++ b/app/src/main/java/com/idormy/sms/forwarder/service/BatteryService.java @@ -10,12 +10,10 @@ import android.os.IBinder; import android.util.Log; import com.idormy.sms.forwarder.MyApplication; -import com.idormy.sms.forwarder.model.vo.SmsHubVo; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.utils.BatteryUtils; import com.idormy.sms.forwarder.utils.SettingUtil; -import com.idormy.sms.forwarder.utils.SmsHubActionHandler; import java.util.Date; @@ -119,11 +117,6 @@ public class BatteryService extends Service { SmsVo smsVo = new SmsVo("88888888", msg, new Date(), "电池状态监听"); Log.d(TAG, "send_msg" + smsVo); SendUtil.send_msg(context, smsVo, 1, "app"); - - //SmsHubApi - if (SettingUtil.getSwitchEnableSmsHubApi()) { - SmsHubActionHandler.putData(new SmsHubVo(SmsHubVo.Type.phone, null, msg, "电池状态监听")); - } } catch (Exception e) { Log.e(TAG, "getLog e:" + e.getMessage()); } diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java b/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java index 70d5ca4d..7102cbb5 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java +++ b/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java @@ -9,12 +9,10 @@ import android.util.Log; import androidx.annotation.RequiresApi; import com.idormy.sms.forwarder.MyApplication; -import com.idormy.sms.forwarder.model.vo.SmsHubVo; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.utils.CommonUtil; import com.idormy.sms.forwarder.utils.SettingUtil; -import com.idormy.sms.forwarder.utils.SmsHubActionHandler; import java.text.SimpleDateFormat; import java.util.Date; @@ -94,11 +92,6 @@ public class NotifyService extends NotificationListenerService { SmsVo smsVo = new SmsVo(packageName, text, new Date(), title); Log.d(TAG, "send_msg" + smsVo); SendUtil.send_msg(this, smsVo, 1, "app"); - - //SmsHubApi - if (SettingUtil.getSwitchEnableSmsHubApi()) { - SmsHubActionHandler.putData(new SmsHubVo(SmsHubVo.Type.app, null, text, packageName)); - } } catch (Exception e) { Log.e(TAG, "onNotificationPosted:", e); } diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/CloneUtils.java b/app/src/main/java/com/idormy/sms/forwarder/utils/CloneUtils.java index 19039cf3..e9d1eb68 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/CloneUtils.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/CloneUtils.java @@ -26,7 +26,6 @@ public class CloneUtils { cloneInfo.setCallType3(SettingUtil.getSwitchCallType3()); cloneInfo.setEnableAppNotify(SettingUtil.getSwitchEnableAppNotify()); cloneInfo.setCancelAppNotify(SettingUtil.getSwitchCancelAppNotify()); - cloneInfo.setSmsHubApiUrl(SettingUtil.getSmsHubApiUrl()); cloneInfo.setBatteryLevelAlarmMin(SettingUtil.getBatteryLevelAlarmMin()); cloneInfo.setBatteryLevelAlarmMax(SettingUtil.getBatteryLevelAlarmMax()); cloneInfo.setBatteryLevelAlarmOnce(SettingUtil.getBatteryLevelAlarmOnce()); @@ -56,7 +55,6 @@ public class CloneUtils { SettingUtil.switchCallType3(cloneInfoVo.isCallType3()); SettingUtil.switchEnableAppNotify(cloneInfoVo.isEnableAppNotify()); SettingUtil.switchCancelAppNotify(cloneInfoVo.isCancelAppNotify()); - SettingUtil.smsHubApiUrl(cloneInfoVo.getSmsHubApiUrl()); SettingUtil.setBatteryLevelAlarmMin(cloneInfoVo.getBatteryLevelAlarmMin()); SettingUtil.setBatteryLevelAlarmMax(cloneInfoVo.getBatteryLevelAlarmMax()); SettingUtil.switchBatteryLevelAlarmOnce(cloneInfoVo.isBatteryLevelAlarmOnce()); diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java b/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java index 95cdd3ee..a83a26f7 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java @@ -30,8 +30,6 @@ public class Define { public static final String SP_MSG_KEY_STRING_BATTERY_LEVEL_ONCE = "tsms_msg_key_string_battery_level_once"; public static final String SP_MSG_KEY_STRING_RETRY_TIMES = "tsms_msg_key_retry_times"; public static final String SP_MSG_KEY_STRING_DELAY_TIME = "tsms_msg_key_delay_time"; - public static final String SP_MSG_KEY_STRING_ENABLE_SMSHUB_API = "tsms_msg_key_string_enable_smshub_api"; - public static final String SP_MSG_KEY_STRING_SMSHUB_API_URL = "tsms_msg_key_string_smshub_api_url"; public static final String SP_MSG_KEY_STRING_ENABLE_HTTP_SERVER = "tsms_msg_key_string_enable_http_server"; public static final String SP_MSG_KEY_STRING_ENABLE_CALL_TYPE_1 = "tsms_msg_key_string_enable_call_type_1"; public static final String SP_MSG_KEY_STRING_ENABLE_CALL_TYPE_2 = "tsms_msg_key_string_enable_call_type_2"; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/Lamda.java b/app/src/main/java/com/idormy/sms/forwarder/utils/Lamda.java index 71c1f47f..78af2ccd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/Lamda.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/Lamda.java @@ -3,6 +3,7 @@ package com.idormy.sms.forwarder.utils; import java.util.Objects; public class Lamda { + @SuppressWarnings("RedundantThrows") public interface Consumer extends Func { void accept(T t) throws Exception; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java index 8005c7c4..77e6fca0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java @@ -226,14 +226,6 @@ public class SettingUtil { sp_setting.edit().putString(key, value).apply(); } - public static void switchEnableSmsHubApi(Boolean enable) { - sp_setting.edit().putBoolean(Define.SP_MSG_KEY_STRING_ENABLE_SMSHUB_API, enable).apply(); - } - - public static boolean getSwitchEnableSmsHubApi() { - return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_ENABLE_SMSHUB_API, false); - } - public static void switchEnableHttpServer(Boolean enable) { sp_setting.edit().putBoolean(Define.SP_MSG_KEY_STRING_ENABLE_HTTP_SERVER, enable).apply(); } @@ -242,14 +234,6 @@ public class SettingUtil { return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_ENABLE_HTTP_SERVER, false); } - public static void smsHubApiUrl(String url) { - sp_setting.edit().putString(Define.SP_MSG_KEY_STRING_SMSHUB_API_URL, url).apply(); - } - - public static String getSmsHubApiUrl() { - return sp_setting.getString(Define.SP_MSG_KEY_STRING_SMSHUB_API_URL, ""); - } - public static void switchCallType1(Boolean switchCallType) { sp_setting.edit().putBoolean(Define.SP_MSG_KEY_STRING_ENABLE_CALL_TYPE_1, switchCallType).apply(); } diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SmsHubActionHandler.java b/app/src/main/java/com/idormy/sms/forwarder/utils/SmsHubActionHandler.java deleted file mode 100644 index 8269c69a..00000000 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SmsHubActionHandler.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.idormy.sms.forwarder.utils; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.Log; - -import com.alibaba.fastjson.JSON; -import com.idormy.sms.forwarder.model.LogModel; -import com.idormy.sms.forwarder.model.vo.SmsHubVo; -import com.idormy.sms.forwarder.sender.SmsHubApiTask; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; - -public class SmsHubActionHandler { - public static final long RULE_ID = -999L; - private static Boolean hasInit = false; - - private static ConcurrentHashMap> cache; - - public enum SmsHubMode { - server, client - } - - @SuppressLint("StaticFieldLeak") - private static Context context; - - @SuppressLint("HandlerLeak") - public static void init(Context context) { - //noinspection SynchronizeOnNonFinalField - synchronized (hasInit) { - if (hasInit) return; - - hasInit = true; - SmsHubActionHandler.context = context; - cache = new ConcurrentHashMap<>(); - for (SmsHubMode smsHubMode : SmsHubMode.values()) { - cache.put(smsHubMode, new ArrayList<>()); - } - } - } - - public static synchronized int size(SmsHubMode smsHubMode) { - return Objects.requireNonNull(cache.get(smsHubMode)).size(); - } - - public static synchronized List getData(SmsHubMode smsHubMode) { - List smsHubVoList = cache.get(smsHubMode); - assert smsHubVoList != null; - if (smsHubVoList.size() > 0) { - cache.put(smsHubMode, new ArrayList<>()); - return smsHubVoList; - } else { - return null; - } - } - - private static long falg = System.currentTimeMillis(); - - public static synchronized void putData(SmsHubMode smsHubMode, SmsHubVo... smsHubVos) { - if (isEnable(smsHubMode)) { - if (smsHubMode == SmsHubMode.server) { - long l = falg; - falg = System.currentTimeMillis(); - if (System.currentTimeMillis() - l > SmsHubApiTask.DELAY_SECONDS * 3) { - return; - } - } - Objects.requireNonNull(cache.get(smsHubMode)).addAll(Arrays.asList(smsHubVos)); - } - } - - public static synchronized void putData(SmsHubVo... smsHubVos) { - for (SmsHubMode smsHubMode : SmsHubMode.values()) { - putData(smsHubMode, smsHubVos); - } - } - - private static boolean isEnable(SmsHubMode smsHubMode) { - boolean enable = false; - if (smsHubMode == SmsHubMode.client) { - enable = SettingUtil.getSwitchEnableSmsHubApi(); - } else if (smsHubMode == SmsHubMode.server) { - enable = SettingUtil.getSwitchEnableHttpServer(); - } - return enable; - } - - public static void handle(String tag, SmsHubVo vo) { - Log.i(tag, JSON.toJSONString(vo)); - String action = vo.getAction(); - if (SmsHubVo.Action.send.code().equals(action)) { - send(tag, vo); - } else { - String errMsg = "暂不支持的action[" + action + "]"; - vo.setErrMsg(errMsg); - vo.setAction(SmsHubVo.Action.failure.code()); - } - vo.setTs(Long.toString(System.currentTimeMillis())); - } - - public static void send(String tag, SmsHubVo vo) { - boolean failure = true; - String msg = ""; - Long logId = null; - try { - if (SmsHubVo.Action.send.code().equals(vo.getAction())) { - vo.setType(SmsHubVo.Type.sms.code()); - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) { - int subscriptionIdBySimId = SimUtil.getSubscriptionIdBySimId(Integer.parseInt(vo.getChannel()) - 1); - msg = SmsUtil.sendSms(subscriptionIdBySimId, vo.getTarget(), vo.getContent()); - String simInfo = "SIM" + (subscriptionIdBySimId + 1); - vo.setChannel(simInfo); - logId = LogUtil.addLog(new LogModel(vo.getType(), vo.getTarget(), vo.getContent(), simInfo, RULE_ID)); - if (msg == null) { - failure = false; - HttpUtil.Toast(tag, "短信发送成功"); - Log.i(tag, "短信发送成功"); - vo.setAction(SmsHubVo.Action.suessces.code()); - LogUtil.updateLog(logId, 2, SmsHubVo.Action.suessces.code()); - } - } else { - msg = "api<22"; - } - } - } catch (Exception e) { - msg += e.getMessage(); - e.printStackTrace(); - } - if (failure) { - msg = "短信发送失败:" + msg; - HttpUtil.Toast(tag, msg); - Log.i(tag, msg); - vo.setAction(SmsHubVo.Action.failure.code()); - vo.setErrMsg(msg); - if (logId != null) { - LogUtil.updateLog(logId, 0, msg); - } - } - } -} diff --git a/app/src/main/res/layout/activity_clone.xml b/app/src/main/res/layout/activity_clone.xml index 1b0da6a9..e48fe9ec 100644 --- a/app/src/main/res/layout/activity_clone.xml +++ b/app/src/main/res/layout/activity_clone.xml @@ -18,7 +18,6 @@ android:orientation="horizontal"> - - - - - - - - - - - - - - Proxy Authenticator Username Password - SmsHub client Mode - Execute the operation returned by the interface Privacy Policy Agree Refuse diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dd2a3e18..a562e272 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -289,8 +289,6 @@ 代理身份验证 用户 密码 - 主动轮询远程 SmsHubApi - 请先填写服务端地址,再启动服务,APP轮询执行接口返回的操作 隐私政策 同意 拒绝