From 30a4f6edb6a69c74e1f2a1fbc7afb115ab8b3d1d Mon Sep 17 00:00:00 2001
From: pppscn <35696959@qq.com>
Date: Thu, 18 Mar 2021 17:05:07 +0800
Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E5=8F=91=E5=88=B0=E5=85=B6=E4=BB=96?=
=?UTF-8?q?=E6=89=8B=E6=9C=BA=E7=9F=AD=E4=BF=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 2 +-
app/src/main/AndroidManifest.xml | 1 +
.../idormy/sms/forwarder/MainActivity.java | 5 +
.../idormy/sms/forwarder/SenderActivity.java | 114 ++++++++++++++
.../sms/forwarder/model/SenderModel.java | 13 ++
.../sms/forwarder/model/vo/SmsSettingVo.java | 54 +++++++
.../idormy/sms/forwarder/sender/SendUtil.java | 29 +++-
.../sms/forwarder/sender/SenderSmsMsg.java | 21 +++
.../idormy/sms/forwarder/utils/NetUtil.java | 55 +++++++
.../idormy/sms/forwarder/utils/SmsUtil.java | 43 ++++++
.../res/layout/alert_dialog_setview_sms.xml | 146 ++++++++++++++++++
app/src/main/res/values/array.xml | 1 +
app/src/main/res/values/strings.xml | 1 +
app/version.gradle | 4 +-
14 files changed, 485 insertions(+), 4 deletions(-)
create mode 100644 app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsSettingVo.java
create mode 100644 app/src/main/java/com/idormy/sms/forwarder/sender/SenderSmsMsg.java
create mode 100644 app/src/main/java/com/idormy/sms/forwarder/utils/NetUtil.java
create mode 100644 app/src/main/java/com/idormy/sms/forwarder/utils/SmsUtil.java
create mode 100644 app/src/main/res/layout/alert_dialog_setview_sms.xml
diff --git a/app/build.gradle b/app/build.gradle
index 15645211..cec1ae15 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,7 +12,7 @@ android {
}
defaultConfig {
applicationId "com.idormy.sms.forwarder"
- minSdkVersion 21
+ minSdkVersion 23
targetSdkVersion 29
versionCode appVersionCode
versionName appVersionName
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9bed9a2c..870002e9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.idormy.sms.forwarder">
+
senderModels = SenderUtil.getSender(ruleModel.getSenderId(), null);
for (SenderModel senderModel : senderModels
) {
- LogUtil.addLog(new LogModel(smsVo.getMobile(), smsVo.getContent(), smsVo.getSimInfo(), senderModel.getId()));
+ LogUtil.addLog(new LogModel(smsVo.getMobile(), smsVo.getContent(), smsVo.getSimInfo(), ruleModel.getId()));
SendUtil.senderSendMsgNoHandError(smsVo, senderModel);
}
}
@@ -216,6 +219,30 @@ public class SendUtil {
}
break;
+ case TYPE_SMS:
+ //try phrase json setting
+ if (senderModel.getJsonSetting() != null) {
+ SmsSettingVo smsSettingVo = JSON.parseObject(senderModel.getJsonSetting(), SmsSettingVo.class);
+ if (smsSettingVo != null) {
+ //仅当无网络时启用
+ if (true == smsSettingVo.getOnlyNoNetwork() && 0 != NetUtil.getNetWorkStatus()) {
+ Log.d(TAG, "仅当无网络时启用,当前网络状态:" + NetUtil.getNetWorkStatus());
+ return;
+ }
+ try {
+ int simSlot = smsSettingVo.getSimSlot() - 1;
+ if (simSlot < 0) { //原进原出
+ simSlot = Integer.parseInt(smsVo.getSimInfo().substring(3, 4)) - 1;
+ Log.d(TAG, "simSlot = " + simSlot);
+ }
+ SenderSmsMsg.sendMsg(handError, simSlot, smsSettingVo.getMobiles(), smsSettingVo.getOnlyNoNetwork(), smsVo.getMobile(), smsVo.getSmsVoForSend());
+ } catch (Exception e) {
+ Log.e(TAG, "senderSendMsg: SenderSmsMsg error " + e.getMessage());
+ }
+ }
+ }
+ break;
+
default:
break;
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderSmsMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderSmsMsg.java
new file mode 100644
index 00000000..c2850675
--- /dev/null
+++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderSmsMsg.java
@@ -0,0 +1,21 @@
+package com.idormy.sms.forwarder.sender;
+
+import android.os.Handler;
+import android.util.Log;
+
+import com.idormy.sms.forwarder.utils.SimUtil;
+import com.idormy.sms.forwarder.utils.SmsUtil;
+
+public class SenderSmsMsg {
+
+ static String TAG = "SenderSmsMsg";
+
+ public static void sendMsg(final Handler handError, int simSlot, String mobiles, Boolean onlyNoNetwork, String from, String text) throws Exception {
+ Log.i(TAG, "sendMsg simSlot:" + simSlot + " mobiles:" + mobiles + " onlyNoNetwork:" + onlyNoNetwork + " from:" + from + " text:" + text);
+
+ //TODO:simSlot转subId
+ int subId = SimUtil.getSubscriptionIdBySimId(simSlot);
+ SmsUtil.sendSms(subId, mobiles, text);
+ }
+
+}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/NetUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/NetUtil.java
new file mode 100644
index 00000000..082a6663
--- /dev/null
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/NetUtil.java
@@ -0,0 +1,55 @@
+package com.idormy.sms.forwarder.utils;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.widget.Toast;
+
+public class NetUtil {
+ //没有网络
+ private static final int NETWORK_NONE = 0;
+ //移动网络
+ private static final int NETWORK_MOBILE = 1;
+ //无线网络
+ private static final int NETWORW_WIFI = 2;
+
+ static Boolean hasInit = false;
+ static Context context;
+
+
+ public static void init(Context context1) {
+ synchronized (hasInit) {
+ if (hasInit) return;
+ hasInit = true;
+ context = context1;
+ }
+ }
+
+ //获取网络启动
+ public static int getNetWorkStatus() {
+ //连接服务 CONNECTIVITY_SERVICE
+ ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ //网络信息 NetworkInfo
+ NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
+
+ if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
+ //判断是否是wifi
+ if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {
+ //返回无线网络
+ Toast.makeText(context, "当前处于无线网络", Toast.LENGTH_SHORT).show();
+ return NETWORW_WIFI;
+ //判断是否移动网络
+ } else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {
+ Toast.makeText(context, "当前处于移动网络", Toast.LENGTH_SHORT).show();
+ //返回移动网络
+ return NETWORK_MOBILE;
+ }
+ } else {
+ //没有网络
+ Toast.makeText(context, "当前没有网络", Toast.LENGTH_SHORT).show();
+ return NETWORK_NONE;
+ }
+ //默认返回 没有网络
+ return NETWORK_NONE;
+ }
+}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SmsUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/SmsUtil.java
new file mode 100644
index 00000000..fd344f50
--- /dev/null
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/SmsUtil.java
@@ -0,0 +1,43 @@
+package com.idormy.sms.forwarder.utils;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.telephony.SmsManager;
+import android.util.Log;
+
+import java.util.List;
+
+public class SmsUtil {
+ static String TAG = "SmsUtil";
+ static Boolean hasInit = false;
+ static Context context;
+
+
+ public static void init(Context context1) {
+ synchronized (hasInit) {
+ if (hasInit) return;
+ hasInit = true;
+ context = context1;
+ }
+ }
+
+ public static void sendSms(int subId, String mobiles, String message) {
+ mobiles = mobiles.replace(";", ";");
+ Log.d(TAG, "subId = " + subId + ", mobiles = " + mobiles + ", message = " + message);
+
+ try {
+ SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
+ PendingIntent sendPI = PendingIntent.getBroadcast(context, 0, new Intent(Context.TELEPHONY_SUBSCRIPTION_SERVICE), PendingIntent.FLAG_ONE_SHOT);
+ PendingIntent deliverPI = PendingIntent.getBroadcast(context, 0, new Intent("DELIVERED_SMS_ACTION"), 0);
+
+ List divideContents = smsManager.divideMessage(message);
+ for (String text : divideContents) {
+ smsManager.sendTextMessage(mobiles, null, text, sendPI, deliverPI);
+ }
+ } catch (Exception e) {
+ Log.e(TAG, e.getMessage());
+ }
+ }
+
+}
diff --git a/app/src/main/res/layout/alert_dialog_setview_sms.xml b/app/src/main/res/layout/alert_dialog_setview_sms.xml
new file mode 100644
index 00000000..64754bff
--- /dev/null
+++ b/app/src/main/res/layout/alert_dialog_setview_sms.xml
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/array.xml b/app/src/main/res/values/array.xml
index 4b00a8b0..257a7002 100644
--- a/app/src/main/res/values/array.xml
+++ b/app/src/main/res/values/array.xml
@@ -9,5 +9,6 @@
- 转发到企业微信应用消息
- 转发到Server酱·Turbo版
- 转发到Telegram机器人
+ - 转发到其他手机短信
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 53ef1690..97bb907b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -14,6 +14,7 @@
设置Bark
设置Server酱·Turbo版
设置Telegram机器人
+ 设置SMS
检查更新
设置
关于
diff --git a/app/version.gradle b/app/version.gradle
index 2b837302..75537fa5 100644
--- a/app/version.gradle
+++ b/app/version.gradle
@@ -1,4 +1,4 @@
ext {
- appVersionCode = 20
- appVersionName = "1.6.4"
+ appVersionCode = 21
+ appVersionName = "1.7.0"
}
\ No newline at end of file