diff --git a/README.md b/README.md index 3aad84c1..acb31612 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ Android手机监听短信并根据指定规则转发到其他手机:钉钉机 - [x] 转发到企业微信应用消息 - [x] 在线检测新版本、升级 - [x] 清理缓存 -- [x] 兼容6.xx、7.xx、8.xx、~~9.xx、10.xx~~(PS.暂未解决收不到广播问题) +- [x] 兼容6.xx、7.xx、8.xx、9.xx、10.xx - [x] 支持双卡手机,增加卡槽标识/运营商/手机号(如果能获取的话) - [x] 支持多重匹配规则 - [ ] 支持正则匹配规则 @@ -111,6 +111,7 @@ Android手机监听短信并根据指定规则转发到其他手机:钉钉机 + [v1.4.0](app/release/SmsForwarder_release_20210304_1.4.0.apk) 支持多重匹配规则 + [v1.4.1](app/release/SmsForwarder_release_20210304_1.4.1.apk) 设置中允许关闭页面帮助/表单填写提示 + [v1.5.0](app/release/SmsForwarder_release_20210305_1.5.0.apk) 新增转发到企业微信应用消息 + + [v1.5.1](app/release/SmsForwarder_release_20210310_1.5.1.apk) 解决Android 9.xx、10.xx收不到广播问题 -------- diff --git a/app/build.gradle b/app/build.gradle index 389ce829..4acf1ee8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,11 +1,10 @@ apply plugin: 'com.android.application' - apply plugin: 'kotlin-android' - apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 28 + buildToolsVersion '29.0.3' + compileSdkVersion 29 compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 @@ -13,11 +12,14 @@ android { defaultConfig { applicationId "com.idormy.sms.forwarder" minSdkVersion 23 - targetSdkVersion 28 - versionCode 13 - versionName "1.5.0" + targetSdkVersion 29 + versionCode 14 + versionName "1.5.1" testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } + lintOptions { + checkReleaseBuilds false + } signingConfigs { //签名信息保存在 C:\Users\\.gradle\gradle.properties release { @@ -38,7 +40,6 @@ android { signingConfig signingConfigs.release } } - buildToolsVersion '29.0.2' //apk file name android.applicationVariants.all { variant -> variant.outputs.all { @@ -57,11 +58,11 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.0.0' + implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test.ext:junit:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' + //testImplementation 'junit:junit:4.12' + //androidTestImplementation 'androidx.test.ext:junit:1.1.1' + //androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' //okhttp implementation 'com.squareup.okhttp3:okhttp:4.9.0' diff --git a/app/release/SmsForwarder_release_20210310_1.5.1.apk b/app/release/SmsForwarder_release_20210310_1.5.1.apk new file mode 100644 index 00000000..12b5a3fc Binary files /dev/null and b/app/release/SmsForwarder_release_20210310_1.5.1.apk differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 32e33910..0c59a534 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -10,9 +10,9 @@ { "type": "SINGLE", "filters": [], - "versionCode": 13, - "versionName": "1.5.0", - "outputFile": "SmsForwarder_release_20210305_1.5.0.apk" + "versionCode": 14, + "versionName": "1.5.1", + "outputFile": "SmsForwarder_release_20210310_1.5.1.apk" } ] } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b17c1329..2dbf2a84 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,6 +7,7 @@ android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" + android:requestLegacyExternalStorage="true" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" @@ -47,7 +48,7 @@ - + @@ -56,15 +57,16 @@ + + + + + - - - - - + 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 4f18c26d..51261f28 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 @@ -9,7 +9,8 @@ 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; +import com.idormy.sms.forwarder.sender.SendUtil; +import com.idormy.sms.forwarder.utils.SimUtil; import java.util.ArrayList; import java.util.Date; @@ -26,7 +27,7 @@ public class SmsForwarderBroadcastReceiver extends BroadcastReceiver { String receiveAction = intent.getAction(); Log.d(TAG, "onReceive intent " + receiveAction); - if (receiveAction.equals("android.provider.Telephony.SMS_RECEIVED")) { + if ("android.provider.Telephony.SMS_RECEIVED".equals(receiveAction)) { try { Bundle extras = intent.getExtras(); @@ -34,11 +35,15 @@ public class SmsForwarderBroadcastReceiver extends BroadcastReceiver { if (object != null) { //获取接收手机号 - String simInfoId = String.valueOf(capturedSimSlot(extras)); - Log.d("SIM_SLOT", " Slot Number " + simInfoId); - Map sim = MyApplication.SimInfo.get(simInfoId); - int sim_id = Integer.parseInt(sim.get("sim_id")) + 1; - String phoneNumber = "SIM" + sim_id + "_" + sim.get("carrier_name") + "_" + sim.get("phone_number"); + String phoneNumber = ""; + try { + String simInfoId = String.valueOf(SimUtil.getSimId(extras)); + Map sim = MyApplication.SimInfo.get(simInfoId); + int sim_id = Integer.parseInt(sim.get("sim_id")) + 1; + phoneNumber = "SIM" + sim_id + "_" + sim.get("carrier_name") + "_" + sim.get("phone_number"); + } catch (Exception e) { + Log.e(TAG, "获取接收手机号失败:" + e.getMessage()); + } List smsVoList = new ArrayList<>(); String format = intent.getStringExtra("format"); @@ -77,33 +82,4 @@ public class SmsForwarderBroadcastReceiver extends BroadcastReceiver { } - //获取卡槽ID - private 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*/ - //TODO:不确定能不能直接返回 - return whichSIM; - } - - 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 8fd76fee..d6e58c14 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java @@ -234,17 +234,32 @@ public class MainActivity extends AppCompatActivity implements ReFlashListView.I // 检查权限是否获取(android6.0及以上系统可能默认关闭权限,且没提示) private void checkPermission() { PackageManager pm = getPackageManager(); + boolean permission_internet = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.INTERNET", this.getPackageName())); 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_foreground_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.FOREGROUND_SERVICE", this.getPackageName())); + boolean permission_read_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_EXTERNAL_STORAGE", this.getPackageName())); + boolean permission_write_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.WRITE_EXTERNAL_STORAGE", this.getPackageName())); + boolean permission_receive_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_SMS", this.getPackageName())); + boolean permission_read_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_SMS", this.getPackageName())); + boolean permission_send_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.SEND_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 && permission_read_phone_state && permission_read_phone_numbers)) { + if (!(permission_internet && permission_receive_boot && permission_foreground_service && + permission_read_external_storage && permission_write_external_storage && + permission_receive_sms && permission_read_sms && permission_send_sms && + permission_read_phone_state && permission_read_phone_numbers)) { ActivityCompat.requestPermissions(this, new String[]{ + Manifest.permission.INTERNET, Manifest.permission.RECEIVE_BOOT_COMPLETED, + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.RECEIVE_SMS, Manifest.permission.READ_SMS, + Manifest.permission.SEND_SMS, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_PHONE_NUMBERS, + Manifest.permission.FOREGROUND_SERVICE, }, 0x01); } } @@ -310,7 +325,7 @@ public class MainActivity extends AppCompatActivity implements ReFlashListView.I } } catch (Exception e) { Log.e(TAG, "getSimInfo fail:" + e.getMessage()); - Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); + Toast.makeText(MainActivity.this, "获取SIM卡信息失败:请先手动设置", Toast.LENGTH_LONG).show(); } } 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 08d14386..2641f0db 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java @@ -10,8 +10,8 @@ import android.os.Build; import android.text.TextUtils; import android.util.Log; +import com.idormy.sms.forwarder.sender.SendHistory; import com.idormy.sms.forwarder.utils.Define; -import com.idormy.sms.forwarder.utils.SendHistory; import com.idormy.sms.forwarder.utils.SettingUtil; import com.smailnet.emailkit.EmailKit; import com.umeng.analytics.MobclickAgent; @@ -96,5 +96,8 @@ public class MyApplication extends Application { SharedPreferences sp = MyApplication.this.getSharedPreferences(Define.SP_CONFIG, Context.MODE_PRIVATE); showHelpTip = sp.getBoolean(Define.SP_CONFIG_SWITCH_HELP_TIP, true); + + String jsonSimInfo = sp.getString(Define.SP_CONFIG_SIM_INFO, ""); + } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java b/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java index 1b9d505a..5c001654 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java @@ -23,9 +23,9 @@ import com.idormy.sms.forwarder.adapter.RuleAdapter; import com.idormy.sms.forwarder.model.RuleModel; import com.idormy.sms.forwarder.model.SenderModel; import com.idormy.sms.forwarder.model.vo.SmsVo; +import com.idormy.sms.forwarder.sender.SendUtil; +import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.utils.RuleUtil; -import com.idormy.sms.forwarder.utils.SendUtil; -import com.idormy.sms.forwarder.utils.SenderUtil; import com.umeng.analytics.MobclickAgent; import java.util.ArrayList; @@ -158,7 +158,7 @@ public class RuleActivity extends AppCompatActivity { btSetRuleSender.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Toast.makeText(RuleActivity.this, "selectSender", Toast.LENGTH_LONG).show(); + //Toast.makeText(RuleActivity.this, "selectSender", Toast.LENGTH_LONG).show(); selectSender(ruleSenderTv); } }); diff --git a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java index 3c5f2d34..db5a3ddc 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java @@ -28,13 +28,13 @@ import com.idormy.sms.forwarder.model.vo.EmailSettingVo; import com.idormy.sms.forwarder.model.vo.QYWXAppSettingVo; import com.idormy.sms.forwarder.model.vo.QYWXGroupRobotSettingVo; import com.idormy.sms.forwarder.model.vo.WebNotifySettingVo; -import com.idormy.sms.forwarder.utils.SenderBarkMsg; -import com.idormy.sms.forwarder.utils.SenderDingdingMsg; -import com.idormy.sms.forwarder.utils.SenderMailMsg; -import com.idormy.sms.forwarder.utils.SenderQyWxAppMsg; -import com.idormy.sms.forwarder.utils.SenderQyWxGroupRobotMsg; -import com.idormy.sms.forwarder.utils.SenderUtil; -import com.idormy.sms.forwarder.utils.SenderWebNotifyMsg; +import com.idormy.sms.forwarder.sender.SenderBarkMsg; +import com.idormy.sms.forwarder.sender.SenderDingdingMsg; +import com.idormy.sms.forwarder.sender.SenderMailMsg; +import com.idormy.sms.forwarder.sender.SenderQyWxAppMsg; +import com.idormy.sms.forwarder.sender.SenderQyWxGroupRobotMsg; +import com.idormy.sms.forwarder.sender.SenderUtil; +import com.idormy.sms.forwarder.sender.SenderWebNotifyMsg; import com.umeng.analytics.MobclickAgent; import java.text.SimpleDateFormat; 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 c4a22a93..fabe7135 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java @@ -2,7 +2,6 @@ package com.idormy.sms.forwarder; import android.content.ComponentName; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; @@ -12,12 +11,10 @@ import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.CompoundButton; -import android.widget.EditText; import android.widget.Switch; import android.widget.TextView; import android.widget.Toast; -import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import com.idormy.sms.forwarder.BroadCastReceiver.RebootBroadcastReceiver; @@ -27,9 +24,6 @@ import com.idormy.sms.forwarder.utils.aUtil; import com.xuexiang.xupdate.easy.EasyUpdate; import com.xuexiang.xupdate.proxy.impl.DefaultUpdateChecker; -import java.util.HashMap; -import java.util.Map; - public class SettingActivity extends AppCompatActivity { private String TAG = "SettingActivity"; @@ -164,83 +158,7 @@ public class SettingActivity extends AppCompatActivity { }); } - private void checkNewVersion() { - try { - String updateUrl = "https://xupdate.bms.ink/update/checkVersion?appKey=com.idormy.sms.forwarder&versionCode="; - updateUrl += aUtil.getVersionCode(SettingActivity.this); - EasyUpdate.checkUpdate(SettingActivity.this, updateUrl); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void feedbackcommit(View view) { - final AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this); - View view1 = View.inflate(SettingActivity.this, R.layout.dialog_feedback, null); - - final EditText feedback_et_email = view1.findViewById(R.id.feedback_et_email); - final EditText feedback_et_text = view1.findViewById(R.id.feedback_et_text); - - builder - .setTitle(R.string.feedback_input_text) - .setView(view1) - .create(); - builder.setPositiveButton("提交反馈", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - try { - Map feedBackData = new HashMap<>(); - feedBackData.put("email", feedback_et_email.getText().toString()); - feedBackData.put("text", feedback_et_text.getText().toString()); - /*new HttpUtil().asyncPost("https://api.sl.willanddo.com/api/tsms/feedBack", feedBackData, new HttpI.Callback() { - @Override - public void onResponse(String result) { - Log.i(TAG, "onResponse: " + result); - if (result != null) { - FeedBackResult feedBackResult = JSON.parseObject(result, FeedBackResult.class); - Log.i(TAG, "feedBackResult: " + feedBackResult); - - if (feedBackResult != null) { - JSONObject feedBackResultObject = JSON.parseObject(result); - Toast.makeText(SettingActivity.this, feedBackResultObject.getString("message"), Toast.LENGTH_LONG).show(); - } else { - Toast.makeText(SettingActivity.this, "感谢您的反馈,我们将尽快处理!", Toast.LENGTH_LONG).show(); - - } - } else { - Toast.makeText(SettingActivity.this, "感谢您的反馈,我们将尽快处理!", Toast.LENGTH_LONG).show(); - - } - - } - - @Override - public void onError(String error) { - Log.i(TAG, "onError: " + error); - Toast.makeText(SettingActivity.this, error, Toast.LENGTH_LONG).show(); - - } - });*/ - - } catch (Exception e) { - Toast.makeText(SettingActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); - Log.d(TAG, "feedback e: " + e.getMessage()); - } - - - } - }).show(); - } - - /**************** - * - * 发起添加群流程。群号:idormy 多米互联(562854376) 的 key 为: HvroJRfvK7GGfnQgaIQ4Rh1un9O83N7M - * 调用 joinQQGroup(HvroJRfvK7GGfnQgaIQ4Rh1un9O83N7M) 即可发起手Q客户端申请加群 idormy 多米互联(562854376) - * - * @param key 由官网生成的key - * @return 返回true表示呼起手Q成功,返回false表示呼起失败 - ******************/ + //发起添加群流程 public boolean joinQQGroup(String key) { Intent intent = new Intent(); intent.setData(Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3D" + key)); diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleAdapter.java b/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleAdapter.java index 42de201b..2cb022dd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleAdapter.java +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleAdapter.java @@ -11,7 +11,7 @@ import android.widget.TextView; import com.idormy.sms.forwarder.R; import com.idormy.sms.forwarder.model.RuleModel; import com.idormy.sms.forwarder.model.SenderModel; -import com.idormy.sms.forwarder.utils.SenderUtil; +import com.idormy.sms.forwarder.sender.SenderUtil; import java.util.List; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SendHistory.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SendHistory.java similarity index 97% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SendHistory.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SendHistory.java index fb17f8fd..a4f95547 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SendHistory.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SendHistory.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.content.ContentValues; import android.content.Context; @@ -10,6 +10,9 @@ import android.util.Log; import com.idormy.sms.forwarder.model.LogModel; import com.idormy.sms.forwarder.model.LogTable; +import com.idormy.sms.forwarder.utils.DbHelper; +import com.idormy.sms.forwarder.utils.Define; +import com.idormy.sms.forwarder.utils.SettingUtil; import java.util.ArrayList; import java.util.HashSet; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java similarity index 97% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SendUtil.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java index 20a278bf..bc84e465 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.content.Context; import android.os.Handler; @@ -15,6 +15,9 @@ import com.idormy.sms.forwarder.model.vo.QYWXAppSettingVo; import com.idormy.sms.forwarder.model.vo.QYWXGroupRobotSettingVo; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.model.vo.WebNotifySettingVo; +import com.idormy.sms.forwarder.utils.LogUtil; +import com.idormy.sms.forwarder.utils.RuleUtil; +import com.idormy.sms.forwarder.utils.SettingUtil; import java.util.List; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderBarkMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderBarkMsg.java similarity index 98% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SenderBarkMsg.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SenderBarkMsg.java index 4af4d7a3..d4a38256 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderBarkMsg.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderBarkMsg.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.os.Bundle; import android.os.Handler; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderDingdingMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderDingdingMsg.java similarity index 98% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SenderDingdingMsg.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SenderDingdingMsg.java index ed40e3d1..8065c01f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderDingdingMsg.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderDingdingMsg.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.os.Bundle; import android.os.Handler; @@ -7,6 +7,7 @@ import android.util.Base64; import android.util.Log; import com.alibaba.fastjson.JSON; +import com.idormy.sms.forwarder.utils.SettingUtil; import java.io.IOException; import java.net.URLEncoder; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderMailMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderMailMsg.java similarity index 98% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SenderMailMsg.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SenderMailMsg.java index 04fb54d3..aeca8c17 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderMailMsg.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderMailMsg.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.os.Bundle; import android.os.Handler; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderQyWxAppMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderQyWxAppMsg.java similarity index 98% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SenderQyWxAppMsg.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SenderQyWxAppMsg.java index 669f634d..9b68fdc6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderQyWxAppMsg.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderQyWxAppMsg.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.os.Bundle; import android.os.Handler; @@ -9,6 +9,7 @@ import android.util.Log; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.idormy.sms.forwarder.MyApplication; +import com.idormy.sms.forwarder.utils.SettingUtil; import java.io.IOException; import java.net.URLEncoder; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderQyWxGroupRobotMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderQyWxGroupRobotMsg.java similarity index 98% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SenderQyWxGroupRobotMsg.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SenderQyWxGroupRobotMsg.java index 63dadbc3..b028b1af 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderQyWxGroupRobotMsg.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderQyWxGroupRobotMsg.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.os.Bundle; import android.os.Handler; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderUtil.java similarity index 98% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SenderUtil.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SenderUtil.java index 1ea75100..b6017497 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderUtil.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.content.ContentValues; import android.content.Context; @@ -9,6 +9,7 @@ import android.util.Log; import com.idormy.sms.forwarder.model.SenderModel; import com.idormy.sms.forwarder.model.SenderTable; +import com.idormy.sms.forwarder.utils.DbHelper; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderWebNotifyMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderWebNotifyMsg.java similarity index 98% rename from app/src/main/java/com/idormy/sms/forwarder/utils/SenderWebNotifyMsg.java rename to app/src/main/java/com/idormy/sms/forwarder/sender/SenderWebNotifyMsg.java index 500c2cec..9bbcddc5 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SenderWebNotifyMsg.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderWebNotifyMsg.java @@ -1,4 +1,4 @@ -package com.idormy.sms.forwarder.utils; +package com.idormy.sms.forwarder.sender; import android.os.Bundle; import android.os.Handler; 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 a1d3bf64..dbf02fdf 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 @@ -3,6 +3,7 @@ package com.idormy.sms.forwarder.utils; public class Define { public static String SP_CONFIG = "forwarder_config"; public static String SP_CONFIG_SWITCH_HELP_TIP = "forwarder_config_switch_help_tip"; + public static String SP_CONFIG_SIM_INFO = "forwarder_config_sim_info"; public static String SP_MSG = "forwarder_msg"; public static String SP_MSG_SET_KEY = "forwarder_msg_set_key"; public static String SP_MSG_SEND_UTIL_EMAIL_HOST_KEY = "forwarder_msg_send_util_email_host_key"; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/DingdingMsg.java b/app/src/main/java/com/idormy/sms/forwarder/utils/DingdingMsg.java deleted file mode 100644 index 0b329efd..00000000 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/DingdingMsg.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.idormy.sms.forwarder.utils; - -import android.util.Base64; -import android.util.Log; - -import java.io.IOException; -import java.net.URLEncoder; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; - -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; - -public class DingdingMsg { - - static String TAG = "DingdingMsg"; - - public static void sendMsg(String msg) throws Exception { - - String webhook_token = SettingUtil.get_using_dingding_token(); - String webhook_secret = SettingUtil.get_using_dingding_secret(); - if (webhook_token.equals("")) { - return; - } - if (!webhook_secret.equals("")) { - Long timestamp = System.currentTimeMillis(); - - String stringToSign = timestamp + "\n" + webhook_secret; - Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(new SecretKeySpec(webhook_secret.getBytes("UTF-8"), "HmacSHA256")); - byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); - String sign = URLEncoder.encode(new String(Base64.encode(signData, Base64.NO_WRAP)), "UTF-8"); - webhook_token += "×tamp=" + timestamp + "&sign=" + sign; - Log.i(TAG, "webhook_token:" + webhook_token); - - } - - final String msgf = msg; - String textMsg = "{ \"msgtype\": \"text\", \"text\": {\"content\": \"" + msg + "\"}}"; - OkHttpClient client = new OkHttpClient(); - RequestBody requestBody = RequestBody.create(MediaType.parse("application/json;charset=utf-8"), - textMsg); - - final Request request = new Request.Builder() - .url(webhook_token) - .addHeader("Content-Type", "application/json; charset=utf-8") - .post(requestBody) - .build(); - Call call = client.newCall(request); - call.enqueue(new Callback() { - @Override - public void onFailure(Call call, IOException e) { - Log.d(TAG, "onFailure:" + e.getMessage()); - SendHistory.addHistory("钉钉转发:" + msgf + "onFailure:" + e.getMessage()); - } - - @Override - public void onResponse(Call call, Response response) throws IOException { - final String responseStr = response.body().string(); - Log.d(TAG, "Code:" + String.valueOf(response.code()) + responseStr); - SendHistory.addHistory("钉钉转发:" + msgf + "Code:" + String.valueOf(response.code()) + responseStr); - } - }); - } -} diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SimUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/SimUtil.java new file mode 100644 index 00000000..c9a87b7f --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/SimUtil.java @@ -0,0 +1,44 @@ +package com.idormy.sms.forwarder.utils; + +import android.os.Bundle; +import android.util.Log; + + +public class SimUtil { + private static String TAG = "SimUtil"; + + //获取卡槽ID + public static int getSimId(Bundle bundle) { + int whichSIM = -1; + if (bundle == null) { + return whichSIM; + } + + if (bundle.containsKey("subscription")) { + whichSIM = bundle.getInt("subscription"); + } + if (whichSIM >= 0 && whichSIM < 5) { + /*In some device Subscription id is return as subscriber id*/ + //TODO:不确定能不能直接返回 + Log.d(TAG, "whichSIM >= 0 && whichSIM < 5:" + whichSIM); + } else { + 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); + } + } + } + + Log.d(TAG, " Slot Number " + whichSIM); + return whichSIM; + } +}