diff --git a/mymessagemanager/build.properties b/mymessagemanager/build.properties index 2414519..2964b78 100644 --- a/mymessagemanager/build.properties +++ b/mymessagemanager/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Tue Feb 25 10:52:41 GMT 2025 +#Tue Feb 25 12:17:54 GMT 2025 stageCount=14 libraryProject= baseVersion=4.1 publishVersion=4.1.13 -buildCount=5 +buildCount=14 baseBetaVersion=4.1.14 diff --git a/mymessagemanager/src/main/AndroidManifest.xml b/mymessagemanager/src/main/AndroidManifest.xml index c1e89fa..90f6448 100644 --- a/mymessagemanager/src/main/AndroidManifest.xml +++ b/mymessagemanager/src/main/AndroidManifest.xml @@ -226,6 +226,8 @@ + + - + \ No newline at end of file diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/MainActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/MainActivity.java index a2bdbd8..26eb1dc 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/MainActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/MainActivity.java @@ -32,6 +32,7 @@ import java.util.ArrayList; import cc.winboll.studio.libaes.utils.AESThemeUtil; import cc.winboll.studio.libaes.views.ASupportToolbar; import androidx.appcompat.widget.Toolbar; +import cc.winboll.studio.mymessagemanager.unittest.UnitTestActivity; public class MainActivity extends BaseActivity { @@ -313,7 +314,11 @@ public class MainActivity extends BaseActivity { Intent i = new Intent(MainActivity.this, AppSettingsActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); - } else if (nItemId == R.id.app_crashtest) { + } else if (nItemId == R.id.app_unittest) { + Intent i = new Intent(MainActivity.this, UnitTestActivity.class); + i.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(i); + } else if (nItemId == R.id.app_crashtest) { for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++) { getString(i); } diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/receivers/SMSRecevier.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/receivers/SMSRecevier.java index b5255c2..ae53231 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/receivers/SMSRecevier.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/receivers/SMSRecevier.java @@ -15,6 +15,7 @@ import cc.winboll.studio.mymessagemanager.utils.SMSRecycleUtil; import cc.winboll.studio.mymessagemanager.utils.SMSUtil; import cc.winboll.studio.mymessagemanager.utils.TTSPlayRuleUtil; import cc.winboll.studio.mymessagemanager.utils.RegexPPiUtils; +import cc.winboll.studio.shared.log.LogUtils; public class SMSRecevier extends BroadcastReceiver { @@ -39,25 +40,11 @@ public class SMSRecevier extends BroadcastReceiver { //LogUtils.d(TAG, "ACTION_SMS_RECEIVED"); String szSmsBody = SMSUtil.getSmsBody(intent); String szSmsAddress = SMSUtil.getSmsAddress(intent); - PhoneUtil phoneUtil = new PhoneUtil(context); - boolean isPhoneInContacts = phoneUtil.isPhoneInContacts(szSmsAddress); AppConfigUtil configUtil = AppConfigUtil.getInstance(context); - boolean isOnlyReceiveContacts = configUtil.mAppConfigBean.isEnableOnlyReceiveContacts(); boolean isEnableTTS = configUtil.mAppConfigBean.isEnableTTS(); boolean isEnableTTSAnalyzeMode = configUtil.mAppConfigBean.isEnableTTSRuleMode(); - boolean isInSMSAcceptRule = SMSReceiveRuleUtil.getInstance(context, false).checkIsSMSAcceptInRule(context, szSmsBody); - //LogUtils.d(TAG, "isInSMSAcceptRule is : " + Boolean.toString(isInSMSAcceptRule)); - if (!isPhoneInContacts) { - GlobalApplication.showApplicationMessage(" The phone number " + szSmsAddress + " is not in contacts."); - if (isOnlyReceiveContacts) { - GlobalApplication.showApplicationMessage("Close the \"Only Receive Contacts\" switch will be receive The " + szSmsAddress + "'s message in future."); - } - } - - if ((!isOnlyReceiveContacts) - || isPhoneInContacts - || isInSMSAcceptRule) { + if (checkIsSMSOK(context, szSmsBody, szSmsAddress)) { int nResultId = SMSUtil.saveReceiveSms(context, szSmsAddress, szSmsBody, "0", System.currentTimeMillis(), "inbox"); if (nResultId >= 0) { NotificationUtil nu = new NotificationUtil(); @@ -81,12 +68,32 @@ public class SMSRecevier extends BroadcastReceiver { SMSRecycleUtil.addSMSRecycleItem(context, bean); } } - - - } - + // + // 检查短信是否在接收设定规则内 + // + public static boolean checkIsSMSOK(Context context, String szSmsBody, String szSmsAddress) { + PhoneUtil phoneUtil = new PhoneUtil(context); + boolean isPhoneInContacts = phoneUtil.isPhoneInContacts(szSmsAddress); + LogUtils.d(TAG, String.format("isPhoneInContacts %s", isPhoneInContacts)); + + boolean isPhoneByDigit = phoneUtil.isPhoneByDigit(szSmsAddress); + LogUtils.d(TAG, String.format("isPhoneByDigit %s", isPhoneByDigit)); + + AppConfigUtil configUtil = AppConfigUtil.getInstance(context); + boolean isOnlyReceiveContacts = configUtil.mAppConfigBean.isEnableOnlyReceiveContacts(); + LogUtils.d(TAG, String.format("isOnlyReceiveContacts %s", isOnlyReceiveContacts)); + + boolean isInSMSAcceptRule = SMSReceiveRuleUtil.getInstance(context, false).checkIsSMSAcceptInRule(context, szSmsBody); + LogUtils.d(TAG, String.format("isInSMSAcceptRule %s", isInSMSAcceptRule)); + + if (isPhoneByDigit + && (!isOnlyReceiveContacts || isPhoneInContacts || isInSMSAcceptRule)) { + return true; + } + return false; + } } diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/unittest/SMSRecevier_Test.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/unittest/SMSRecevier_Test.java new file mode 100644 index 0000000..57a8b8a --- /dev/null +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/unittest/SMSRecevier_Test.java @@ -0,0 +1,45 @@ +package cc.winboll.studio.mymessagemanager.unittest; + +/** + * @Author ZhanGSKen@AliYun.Com + * @Date 2025/02/25 19:02:15 + * @Describe SMSRecevier 测试类 + */ +import cc.winboll.studio.mymessagemanager.utils.SMSReceiveRuleUtil; +import android.content.Context; +import cc.winboll.studio.shared.log.LogUtils; +import cc.winboll.studio.mymessagemanager.receivers.SMSRecevier; + +public class SMSRecevier_Test { + + public static final String TAG = "SMSRecevier_Test"; + + public static void main(Context context) { + String szSmsBody = "无影无迹"; + String szSmsAddress = "无名小辈"; + test1(context, szSmsBody, szSmsAddress); + + szSmsBody = "无影无迹"; + szSmsAddress = "1?0"; + test1(context, szSmsBody, szSmsAddress); + + szSmsBody = "无影无迹"; + szSmsAddress = "10000"; + test1(context, szSmsBody, szSmsAddress); + + szSmsBody = "【UC】无影无迹"; + szSmsAddress = "无名小辈"; + test1(context, szSmsBody, szSmsAddress); + + szSmsBody = "【UC】无影无迹"; + szSmsAddress = "10000"; + test1(context, szSmsBody, szSmsAddress); + + } + + public static void test1(Context context, String szSmsBody, String szSmsAddress) { + + boolean isSMSOK = SMSRecevier.checkIsSMSOK(context, szSmsBody, szSmsAddress); + LogUtils.d(TAG, String.format("szSmsBody : %s\nszSmsAddress : %s\nisSMSOK : %s", szSmsBody, szSmsAddress, isSMSOK)); + } +} diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/unittest/UnitTestActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/unittest/UnitTestActivity.java new file mode 100644 index 0000000..fb32133 --- /dev/null +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/unittest/UnitTestActivity.java @@ -0,0 +1,33 @@ +package cc.winboll.studio.mymessagemanager.unittest; + +/** + * @Author ZhanGSKen@AliYun.Com + * @Date 2025/02/25 19:00:10 + * @Describe 应用单元测试窗口 + */ +import cc.winboll.studio.mymessagemanager.unittest.*; +import android.app.Activity; +import android.os.Bundle; +import cc.winboll.studio.mymessagemanager.R; +import android.view.View; +import cc.winboll.studio.shared.log.LogView; + +public class UnitTestActivity extends Activity { + + public static final String TAG = "UnitTestActivity"; + + LogView mLogView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_unittest); + + mLogView = findViewById(R.id.logview); + mLogView.start(); + } + + public void onMain(View view) { + SMSRecevier_Test.main(this); + } +} diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/PhoneUtil.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/PhoneUtil.java index 7001c12..197daad 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/PhoneUtil.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/PhoneUtil.java @@ -15,6 +15,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.regex.Pattern; +import java.util.regex.Matcher; +import cc.winboll.studio.shared.log.LogUtils; public class PhoneUtil { @@ -67,4 +70,23 @@ public class PhoneUtil { return false; } + // + // 检验电话号码是否是数字 + // + public static boolean isPhoneByDigit(String szPhone) { + if(!RegexPPiUtils.isPPiOK(szPhone)) { + return false; + } + //String text = "这里是一些任意的文本内容"; + String regex = "\\d+"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(szPhone); + LogUtils.d(TAG, String.format("matcher.matches() : %s", matcher.matches())); + /*if (matcher.matches()) { + System.out.println("文本满足该正则表达式模式"); + } else { + System.out.println("文本不满足该正则表达式模式"); + }*/ + return matcher.matches(); + } } diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/SMSReceiveRuleUtil.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/SMSReceiveRuleUtil.java index 1c8949b..bd3be9f 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/SMSReceiveRuleUtil.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/SMSReceiveRuleUtil.java @@ -194,9 +194,9 @@ public class SMSReceiveRuleUtil { public ArrayList loadConfigData() { ArrayList list = new ArrayList(); SMSAcceptRuleBean.loadBeanList(mContext, list, SMSAcceptRuleBean.class); - for (int i = 0; i < list.size(); i++) { - LogUtils.d(TAG, "loadConfigData isEnable : " + Boolean.toString(list.get(i).isEnable())); - } +// for (int i = 0; i < list.size(); i++) { +// LogUtils.d(TAG, "loadConfigData isEnable : " + Boolean.toString(list.get(i).isEnable())); +// } mDataList.clear(); mDataList.addAll(list); return mDataList; diff --git a/mymessagemanager/src/main/res/layout/activity_unittest.xml b/mymessagemanager/src/main/res/layout/activity_unittest.xml new file mode 100644 index 0000000..66c1835 --- /dev/null +++ b/mymessagemanager/src/main/res/layout/activity_unittest.xml @@ -0,0 +1,44 @@ + + + + + + + + + +