短信模板增加卡槽标识(SIM1:188xxxxxxxx 或 SIMx:unknown)

pull/67/head
pppscn 4 years ago
parent 964e5680aa
commit a2e2d1dc41

@ -78,6 +78,8 @@ Android手机监听短信并根据指定规则转发到其他手机、钉钉机
## 更新记录:
> [v1.2.2](app/release/SmsForwarder_release_20210302_1.2.2.apk) 【预发布】短信模板增加卡槽标识SIM1188xxxxxxxx 或 SIMxunknown
> [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 {

@ -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);
}
private void checkPermission() {
// 检查权限是否获取android6.0及以上系统可能默认关闭权限,且没提示)
private void checkPermission() {
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…
Cancel
Save