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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mymessagemanager/src/main/res/menu/toolbar_main.xml b/mymessagemanager/src/main/res/menu/toolbar_main.xml
index 84780f4..ac86798 100644
--- a/mymessagemanager/src/main/res/menu/toolbar_main.xml
+++ b/mymessagemanager/src/main/res/menu/toolbar_main.xml
@@ -19,6 +19,9 @@
android:title="@string/text_smsrule"/>
-