mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-02 17:07:41 +08:00
短信模板增加卡槽标识(SIM1:188xxxxxxxx 或 SIMx:unknown)
This commit is contained in:
parent
562b1dba1a
commit
01229af3fb
@ -78,6 +78,8 @@ Android手机监听短信并根据指定规则转发到其他手机、钉钉机
|
||||
|
||||
## 更新记录:
|
||||
|
||||
> [v1.2.2](app/release/SmsForwarder_release_20210302_1.2.2.apk) 【预发布】短信模板增加卡槽标识(SIM1:188xxxxxxxx 或 SIMx:unknown)
|
||||
|
||||
> [v1.2.1](app/release/SmsForwarder_release_20210226_1.2.1.apk) 修复bark-server升级到2.0后的兼容性问题
|
||||
|
||||
> [v1.2.0](app/release/SmsForwarder_release_20210219_1.2.0.apk) 重写SMTP邮件发送(推荐升级)
|
||||
|
@ -14,8 +14,8 @@ android {
|
||||
applicationId "com.idormy.sms.forwarder"
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 28
|
||||
versionCode 7
|
||||
versionName "1.2.1"
|
||||
versionCode 8
|
||||
versionName "1.2.2"
|
||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||
}
|
||||
buildTypes {
|
||||
@ -24,7 +24,7 @@ android {
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
buildToolsVersion '28.0.3'
|
||||
buildToolsVersion '29.0.2'
|
||||
//apk file name
|
||||
android.applicationVariants.all { variant ->
|
||||
variant.outputs.all {
|
||||
|
BIN
app/release/SmsForwarder_release_20210302_1.2.2.apk
Normal file
BIN
app/release/SmsForwarder_release_20210302_1.2.2.apk
Normal file
Binary file not shown.
@ -10,9 +10,9 @@
|
||||
{
|
||||
"type": "SINGLE",
|
||||
"filters": [],
|
||||
"versionCode": 7,
|
||||
"versionName": "1.2.1",
|
||||
"outputFile": "SmsForwarder_release_20210226_1.2.1.apk"
|
||||
"versionCode": 8,
|
||||
"versionName": "1.2.2",
|
||||
"outputFile": "SmsForwarder_release_20210302_1.2.2.apk"
|
||||
}
|
||||
]
|
||||
}
|
@ -3,9 +3,11 @@ package com.idormy.sms.forwarder.BroadCastReceiver;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.telephony.SmsMessage;
|
||||
import android.util.Log;
|
||||
|
||||
import com.idormy.sms.forwarder.MyApplication;
|
||||
import com.idormy.sms.forwarder.model.vo.SmsVo;
|
||||
import com.idormy.sms.forwarder.utils.SendUtil;
|
||||
|
||||
@ -26,8 +28,21 @@ public class SmsForwarderBroadcastReceiver extends BroadcastReceiver {
|
||||
if (receiveAction.equals("android.provider.Telephony.SMS_RECEIVED")) {
|
||||
try {
|
||||
|
||||
Object[] object = (Object[]) Objects.requireNonNull(intent.getExtras()).get("pdus");
|
||||
Bundle extras = intent.getExtras();
|
||||
Object[] object = (Object[]) Objects.requireNonNull(extras).get("pdus");
|
||||
if (object != null) {
|
||||
|
||||
//获取接收手机号
|
||||
String phoneNumber;
|
||||
int solt = capturedSimSlot(extras);
|
||||
Log.d("SIM_SLOT", " Slot Number " + solt);
|
||||
if (solt == 1) {
|
||||
MyApplication appContext = (MyApplication) context.getApplicationContext();
|
||||
phoneNumber = "SIM1:" + appContext.getLine1Number();
|
||||
} else {
|
||||
phoneNumber = "SIM" + solt + ":unknown";
|
||||
}
|
||||
|
||||
List<SmsVo> smsVoList = new ArrayList<>();
|
||||
String format = intent.getStringExtra("format");
|
||||
Map<String, String> mobileToContent = new HashMap<>();
|
||||
@ -50,7 +65,7 @@ public class SmsForwarderBroadcastReceiver extends BroadcastReceiver {
|
||||
|
||||
}
|
||||
for (String mobile : mobileToContent.keySet()) {
|
||||
smsVoList.add(new SmsVo(mobile, mobileToContent.get(mobile), date));
|
||||
smsVoList.add(new SmsVo(mobile, mobileToContent.get(mobile), date, phoneNumber));
|
||||
}
|
||||
Log.d(TAG, "短信:" + smsVoList);
|
||||
SendUtil.send_msg_list(context, smsVoList);
|
||||
@ -65,4 +80,30 @@ public class SmsForwarderBroadcastReceiver extends BroadcastReceiver {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public int capturedSimSlot(Bundle bundle) {
|
||||
int whichSIM = -1;
|
||||
if (bundle.containsKey("subscription")) {
|
||||
whichSIM = bundle.getInt("subscription");
|
||||
}
|
||||
if (whichSIM >= 0 && whichSIM < 5) {
|
||||
/*In some device Subscription id is return as subscriber id*/
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (bundle.containsKey("simId")) {
|
||||
whichSIM = bundle.getInt("simId");
|
||||
} else if (bundle.containsKey("com.android.phone.extra.slot")) {
|
||||
whichSIM = bundle.getInt("com.android.phone.extra.slot");
|
||||
} else {
|
||||
String keyName = "";
|
||||
for (String key : bundle.keySet()) {
|
||||
if (key.contains("sim"))
|
||||
keyName = key;
|
||||
}
|
||||
if (bundle.containsKey(keyName)) {
|
||||
whichSIM = bundle.getInt(keyName);
|
||||
}
|
||||
}
|
||||
return whichSIM;
|
||||
}
|
||||
}
|
@ -1,12 +1,14 @@
|
||||
package com.idormy.sms.forwarder;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
@ -57,21 +59,18 @@ public class MainActivity extends AppCompatActivity implements ReFlashListView.I
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
LogVo logVo = logVos.get(position - 1);
|
||||
logDetail(logVo);
|
||||
// Toast.makeText(MainActivity.this,String.valueOf(position),Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
// textv_msg.setMovementMethod(ScrollingMovementMethod.getInstance());
|
||||
// textv_msg.setText(SendHistory.getHistory());
|
||||
|
||||
//检查权限是否获取
|
||||
checkPermission();
|
||||
|
||||
// intentFilter=new IntentFilter();
|
||||
// intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
|
||||
// intentFilter.addAction(MessageBroadcastReceiver.ACTION_DINGDING);
|
||||
// smsBroadcastReceiver=new SMSBroadcastReceiver();
|
||||
// //动态注册广播
|
||||
// registerReceiver(smsBroadcastReceiver, intentFilter);
|
||||
//获取本机号码
|
||||
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
|
||||
String Line1Number = mTelephonyMgr.getLine1Number();
|
||||
Log.d(TAG, "Line1Number: " + Line1Number);
|
||||
MyApplication appContext = ((MyApplication) getApplicationContext());
|
||||
appContext.setLine1Number(Line1Number);
|
||||
}
|
||||
|
||||
// 初始化数据
|
||||
@ -176,19 +175,20 @@ public class MainActivity extends AppCompatActivity implements ReFlashListView.I
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
// 检查权限是否获取(android6.0及以上系统可能默认关闭权限,且没提示)
|
||||
private void checkPermission() {
|
||||
// 检查权限是否获取(android6.0及以上系统可能默认关闭权限,且没提示)
|
||||
PackageManager pm = getPackageManager();
|
||||
boolean permission_receive_boot = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_BOOT_COMPLETED", this.getPackageName()));
|
||||
boolean permission_readsms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_SMS", this.getPackageName()));
|
||||
boolean permission_read_phone_state = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_STATE", this.getPackageName()));
|
||||
boolean permission_read_phone_numbers = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_NUMBERS", this.getPackageName()));
|
||||
|
||||
if (!(
|
||||
permission_receive_boot
|
||||
&& permission_readsms
|
||||
)) {
|
||||
if (!(permission_receive_boot && permission_readsms && permission_read_phone_state && permission_read_phone_numbers)) {
|
||||
ActivityCompat.requestPermissions(this, new String[]{
|
||||
Manifest.permission.RECEIVE_BOOT_COMPLETED,
|
||||
Manifest.permission.READ_SMS,
|
||||
Manifest.permission.READ_PHONE_STATE,
|
||||
Manifest.permission.READ_PHONE_NUMBERS,
|
||||
}, 0x01);
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ import com.umeng.commonsdk.UMConfigure;
|
||||
|
||||
public class MyApplication extends Application {
|
||||
private static final String TAG = "MyApplication";
|
||||
private String Line1Number;
|
||||
|
||||
/**
|
||||
* <meta-data
|
||||
@ -54,6 +55,14 @@ public class MyApplication extends Application {
|
||||
return channelName;
|
||||
}
|
||||
|
||||
public String getLine1Number() {
|
||||
return Line1Number;
|
||||
}
|
||||
|
||||
public void setLine1Number(String s) {
|
||||
Line1Number = s;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
super.attachBaseContext(base);
|
||||
|
@ -650,7 +650,7 @@ public class SenderActivity extends AppCompatActivity {
|
||||
String barkServer = editTextBarkServer.getText().toString();
|
||||
if (!barkServer.isEmpty()) {
|
||||
try {
|
||||
SenderBarkMsg.sendMsg(handler, barkServer, "信息来源", "【京东】验证码为387481(切勿将验证码告知他人),请在页面中输入完成验证,如有问题请点击 ihelp.jd.com 联系京东客服");
|
||||
SenderBarkMsg.sendMsg(handler, barkServer, "19999999999", "【京东】验证码为387481(切勿将验证码告知他人),请在页面中输入完成验证,如有问题请点击 ihelp.jd.com 联系京东客服", "18888888888");
|
||||
} catch (Exception e) {
|
||||
Toast.makeText(SenderActivity.this, "发送失败:" + e.getMessage(), Toast.LENGTH_LONG).show();
|
||||
e.printStackTrace();
|
||||
|
@ -8,14 +8,16 @@ public class SmsVo implements Serializable {
|
||||
String mobile;
|
||||
String content;
|
||||
Date date;
|
||||
String phoneNumber = "本机号码:未知";
|
||||
|
||||
public SmsVo() {
|
||||
}
|
||||
|
||||
public SmsVo(String mobile, String content, Date date) {
|
||||
public SmsVo(String mobile, String content, Date date, String phoneNumber) {
|
||||
this.mobile = mobile;
|
||||
this.content = content;
|
||||
this.date = date;
|
||||
this.phoneNumber = phoneNumber;
|
||||
}
|
||||
|
||||
public String getMobile() {
|
||||
@ -42,10 +44,19 @@ public class SmsVo implements Serializable {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public String getPhoneNumber() {
|
||||
return phoneNumber;
|
||||
}
|
||||
|
||||
public void setPhoneNumber(String phoneNumber) {
|
||||
this.phoneNumber = phoneNumber;
|
||||
}
|
||||
|
||||
public String getSmsVoForSend() {
|
||||
return mobile + "\n" +
|
||||
content + "\n" +
|
||||
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
|
||||
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date) + "\n" +
|
||||
phoneNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -54,6 +65,7 @@ public class SmsVo implements Serializable {
|
||||
"mobile='" + mobile + '\'' +
|
||||
", content='" + content + '\'' +
|
||||
", date=" + date +
|
||||
", phoneNumber=" + phoneNumber +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
@ -221,7 +221,7 @@ public class SendUtil {
|
||||
BarkSettingVo barkSettingVo = JSON.parseObject(senderModel.getJsonSetting(), BarkSettingVo.class);
|
||||
if (barkSettingVo != null) {
|
||||
try {
|
||||
SenderBarkMsg.sendMsg(null, barkSettingVo.getServer(), smsVo.getMobile(), smsVo.getContent());
|
||||
SenderBarkMsg.sendMsg(null, barkSettingVo.getServer(), smsVo.getMobile(), smsVo.getContent(), smsVo.getPhoneNumber());
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "senderSendMsg: SenderBarkMsg error " + e.getMessage());
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.idormy.sms.forwarder.utils;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -21,13 +22,14 @@ public class SenderBarkMsg {
|
||||
|
||||
static String TAG = "SenderBarkMsg";
|
||||
|
||||
public static void sendMsg(final Handler handError, String barkServer, String from, String content) throws Exception {
|
||||
Log.i(TAG, "sendMsg barkServer:" + barkServer + " from:" + from + " content:" + content);
|
||||
public static void sendMsg(final Handler handError, String barkServer, String from, String content, String phoneNumber) throws Exception {
|
||||
Log.i(TAG, "sendMsg barkServer:" + barkServer + " from:" + from + " content:" + content + " phoneNumber:" + phoneNumber);
|
||||
|
||||
if (barkServer == null || barkServer.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
content += "\n[" + phoneNumber + "]";
|
||||
barkServer += URLEncoder.encode(from, "UTF-8");
|
||||
barkServer += "/" + URLEncoder.encode(content, "UTF-8");
|
||||
barkServer += "?isArchive=1"; //自动保存
|
||||
@ -51,7 +53,7 @@ public class SenderBarkMsg {
|
||||
Log.d(TAG, "onFailure:" + e.getMessage());
|
||||
|
||||
if (handError != null) {
|
||||
android.os.Message msg = new android.os.Message();
|
||||
Message msg = new Message();
|
||||
msg.what = NOTIFY;
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("DATA", "发送失败:" + e.getMessage());
|
||||
@ -67,7 +69,7 @@ public class SenderBarkMsg {
|
||||
Log.d(TAG, "Code:" + response.code() + responseStr);
|
||||
|
||||
if (handError != null) {
|
||||
android.os.Message msg = new android.os.Message();
|
||||
Message msg = new Message();
|
||||
msg.what = NOTIFY;
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("DATA", "发送状态:" + responseStr);
|
||||
|
Loading…
x
Reference in New Issue
Block a user