diff --git a/README.md b/README.md index 7ffcb6d4..52bc88e7 100644 --- a/README.md +++ b/README.md @@ -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邮件发送(推荐升级) diff --git a/app/build.gradle b/app/build.gradle index cfdffa7f..7771fd2e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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 { diff --git a/app/release/SmsForwarder_release_20210302_1.2.2.apk b/app/release/SmsForwarder_release_20210302_1.2.2.apk new file mode 100644 index 00000000..65405ea1 Binary files /dev/null and b/app/release/SmsForwarder_release_20210302_1.2.2.apk differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index a34ef622..95da6fc6 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -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" } ] } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/BroadCastReceiver/SmsForwarderBroadcastReceiver.java b/app/src/main/java/com/idormy/sms/forwarder/BroadCastReceiver/SmsForwarderBroadcastReceiver.java index 38ad7676..31e3b41e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/BroadCastReceiver/SmsForwarderBroadcastReceiver.java +++ b/app/src/main/java/com/idormy/sms/forwarder/BroadCastReceiver/SmsForwarderBroadcastReceiver.java @@ -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 smsVoList = new ArrayList<>(); String format = intent.getStringExtra("format"); Map 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; + } +} \ No newline at end of file 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 cf57622c..c749c7c1 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java @@ -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); } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java b/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java index 24fa4f45..2cae24e2 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java @@ -17,6 +17,7 @@ import com.umeng.commonsdk.UMConfigure; public class MyApplication extends Application { private static final String TAG = "MyApplication"; + private String Line1Number; /** *