From 090070aa0e534e813aba0fbbf6c6aff3340dcb97 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Tue, 9 Dec 2025 11:18:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=9F=BA=E7=A1=80=E7=B1=BB?= =?UTF-8?q?=E5=BA=93=EF=BC=8C=E5=8D=87=E7=BA=A7=E5=BA=94=E7=94=A8=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E7=89=88=E6=9C=AC=E5=8F=B7=E3=80=82=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=B1=BB=E5=BC=95=E7=94=A8=E8=B7=AF=E5=BE=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mymessagemanager/build.gradle | 25 ++-- mymessagemanager/build.properties | 12 +- mymessagemanager/proguard-rules.pro | 138 +++++++++++++++++- .../winboll/studio/mymessagemanager/App.java | 19 ++- .../activitys/AboutActivity.java | 11 +- .../activitys/AppSettingsActivity.java | 5 +- .../activitys/ComposeSMSActivity.java | 10 +- .../activitys/MainActivity.java | 3 +- .../activitys/SMSRecycleActivity.java | 2 +- .../activitys/SharedJSONReceiveActivity.java | 5 +- .../activitys/WinBoLLActivity.java | 4 +- .../adapters/SMSAcceptRuleArrayAdapter.java | 2 +- .../adapters/SMSArrayAdapter.java | 8 +- .../adapters/SMSRecycleAdapter.java | 6 +- .../dialogs/YesNoAlertDialog.java | 59 -------- .../services/MainService.java | 3 +- .../mymessagemanager/utils/PhoneUtil.java | 1 - .../mymessagemanager/utils/RegexPPiUtils.java | 32 ++++ .../utils/SMSReceiveRuleUtil.java | 1 - .../mymessagemanager/utils/SMSUtil.java | 2 +- .../utils/TTSPlayRuleUtil.java | 3 +- .../views/ConfirmSwitchView.java | 2 +- .../src/main/res/layout/remoteview.xml | 1 - 23 files changed, 228 insertions(+), 126 deletions(-) delete mode 100644 mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/dialogs/YesNoAlertDialog.java create mode 100644 mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/RegexPPiUtils.java diff --git a/mymessagemanager/build.gradle b/mymessagemanager/build.gradle index d423b2c..d1d7aa9 100644 --- a/mymessagemanager/build.gradle +++ b/mymessagemanager/build.gradle @@ -29,28 +29,15 @@ android { // versionName 更新后需要手动设置 // .winboll/winbollBuildProps.properties 文件的 stageCount=0 // Gradle编译环境下合起来的 versionName 就是 "${versionName}.0" - versionName "15.3" + versionName "15.12" if(true) { versionName = genVersionName("${versionName}") } } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } } dependencies { - api fileTree(dir: 'libs', include: ['*.jar']) - api 'cc.winboll.studio:libaes:15.9.3' - api 'cc.winboll.studio:libapputils:15.8.6' - api 'cc.winboll.studio:libappbase:15.9.5' - api 'io.github.medyo:android-about-page:2.0.0' - api 'com.github.getActivity:ToastUtils:10.5' api 'com.jcraft:jsch:0.1.55' api 'org.jsoup:jsoup:1.13.1' api 'com.squareup.okhttp3:okhttp:4.4.1' @@ -69,4 +56,14 @@ dependencies { //api 'androidx.vectordrawable:vectordrawable-animated:1.1.0' //api 'androidx.fragment:fragment:1.1.0' api 'com.google.android.material:material:1.0.0' + + // WinBoLL库 nexus.winboll.cc 地址 + //api 'cc.winboll.studio:libaes:15.12.0' + //api 'cc.winboll.studio:libappbase:15.12.2' + + // WinBoLL备用库 jitpack.io 地址 + api 'com.github.ZhanGSKen:AES:aes-v15.12.3' + api 'com.github.ZhanGSKen:APPBase:appbase-v15.12.2' + + api fileTree(dir: 'libs', include: ['*.jar']) } diff --git a/mymessagemanager/build.properties b/mymessagemanager/build.properties index dee8c20..87a58ab 100644 --- a/mymessagemanager/build.properties +++ b/mymessagemanager/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun Sep 28 12:37:31 HKT 2025 -stageCount=10 +#Tue Dec 09 03:17:03 GMT 2025 +stageCount=0 libraryProject= -baseVersion=15.3 -publishVersion=15.3.9 -buildCount=0 -baseBetaVersion=15.3.10 +baseVersion=15.12 +publishVersion=15.12.0 +buildCount=2 +baseBetaVersion=15.12.1 diff --git a/mymessagemanager/proguard-rules.pro b/mymessagemanager/proguard-rules.pro index 233bad2..855b18a 100644 --- a/mymessagemanager/proguard-rules.pro +++ b/mymessagemanager/proguard-rules.pro @@ -9,9 +9,135 @@ # Add any project specific keep options here: -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} +# ============================== 基础通用规则 ============================== +# 保留系统组件 +-keep public class * extends android.app.Activity +-keep public class * extends android.app.Service +-keep public class * extends android.content.BroadcastReceiver +-keep public class * extends android.content.ContentProvider +-keep public class * extends android.app.backup.BackupAgentHelper +-keep public class * extends android.preference.Preference + +# 保留 WinBoLL 核心包及子类(合并简化规则) +-keep class cc.winboll.studio.** { *; } +-keepclassmembers class cc.winboll.studio.** { *; } + +# 保留所有类中的 public static final String TAG 字段(便于日志定位) +-keepclassmembers class * { + public static final java.lang.String TAG; +} + +# 保留序列化类(避免Parcelable/Gson解析异常) +-keep class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator *; +} +-keepclassmembers class * implements java.io.Serializable { + static final long serialVersionUID; + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +# 保留 R 文件(避免资源ID混淆) +-keepclassmembers class **.R$* { + public static ; +} + +# 保留 native 方法(避免JNI调用失败) +-keepclasseswithmembernames class * { + native ; +} + +# 保留注解和泛型(避免反射/序列化异常) +-keepattributes *Annotation* +-keepattributes Signature + +# 屏蔽 Java 8+ 警告(适配 Java 7 语法) +-dontwarn java.lang.invoke.* +-dontwarn android.support.v8.renderscript.* +-dontwarn java.util.function.** + +# ============================== 第三方框架专项规则 ============================== +# OkHttp 4.4.1(米盟广告请求依赖,完善Lambda兼容) +-keep class okhttp3.** { *; } +-keep interface okhttp3.** { *; } +-keep class okhttp3.internal.** { *; } +-keep class okio.** { *; } +-dontwarn okhttp3.internal.platform.** +-dontwarn okio.** +# ============================== 必要补充规则 ============================== +# OkHttp 4.4.1 补充规则(Java 7 兼容) +-keep class okhttp3.internal.concurrent.** { *; } +-keep class okhttp3.internal.connection.** { *; } +-dontwarn okhttp3.internal.concurrent.TaskRunner +-dontwarn okhttp3.internal.connection.RealCall + +# Glide 4.9.0(米盟广告图片加载依赖) +-keep public class * implements com.bumptech.glide.module.GlideModule +-keep public class * extends com.bumptech.glide.module.AppGlideModule +-keep public enum com.bumptech.glide.load.ImageHeaderParser$ImageType { + **[] $VALUES; + public *; +} +-keepclassmembers class * implements com.bumptech.glide.module.AppGlideModule { + (); +} +-dontwarn com.bumptech.glide.** + +# Gson 2.8.5(米盟广告数据序列化依赖) +-keep class com.google.gson.** { *; } +-keep interface com.google.gson.** { *; } +-keepclassmembers class * { + @com.google.gson.annotations.SerializedName ; +} + +# 米盟 SDK(核心广告组件,完整保留避免加载失败) +-keep class com.miui.zeus.** { *; } +-keep interface com.miui.zeus.** { *; } +# 保留米盟日志字段(便于广告加载失败排查) +-keepclassmembers class com.miui.zeus.mimo.sdk.** { + public static final java.lang.String TAG; +} + +# RecyclerView 1.0.0(米盟广告布局渲染依赖) +-keep class androidx.recyclerview.** { *; } +-keep interface androidx.recyclerview.** { *; } +-keepclassmembers class androidx.recyclerview.widget.RecyclerView$Adapter { + public *; +} + +# 其他第三方框架(按引入依赖保留,无则可删除) +# XXPermissions 18.63 +-keep class com.hjq.permissions.** { *; } +-keep interface com.hjq.permissions.** { *; } + +# ZXing 二维码(核心解析组件) +-keep class com.google.zxing.** { *; } +-keep class com.journeyapps.zxing.** { *; } + +# Jsoup HTML解析 +-keep class org.jsoup.** { *; } + +# Pinyin4j 拼音搜索 +-keep class net.sourceforge.pinyin4j.** { *; } + +# JSch SSH组件 +-keep class com.jcraft.jsch.** { *; } + +# AndroidX 基础组件 +-keep class androidx.appcompat.** { *; } +-keep interface androidx.appcompat.** { *; } + +# ============================== 优化与调试配置 ============================== +# 优化级别(平衡混淆效果与性能) +-optimizationpasses 5 +-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* + +# 调试辅助(保留行号便于崩溃定位) +-verbose +-dontpreverify +-dontusemixedcaseclassnames +-keepattributes SourceFile,LineNumberTable + diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/App.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/App.java index 7894f6d..8edf7f4 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/App.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/App.java @@ -7,9 +7,10 @@ package cc.winboll.studio.mymessagemanager; */ import android.view.Gravity; import cc.winboll.studio.libappbase.GlobalApplication; +import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.mymessagemanager.R; -import com.hjq.toast.ToastUtils; import java.io.File; +import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; public class App extends GlobalApplication { @@ -29,18 +30,22 @@ public class App extends GlobalApplication { @Override public void onCreate() { super.onCreate(); + setIsDebugging(BuildConfig.DEBUG); + + // 初始化窗口管理类 + WinBoLLActivityManager.init(this); // 初始化 Toast 框架 ToastUtils.init(this); - // 设置 Toast 布局样式 - ToastUtils.setView(R.layout.toast_custom_view); - //ToastUtils.setStyle(new WhiteToastStyle()); - ToastUtils.setGravity(Gravity.BOTTOM, 0, 200); - - //LogUtils.d(TAG, "BuildConfig.DEBUG " + Boolean.toString(BuildConfig.DEBUG)); _mszAppExternalFilesDir = getExternalFilesDir(TAG).toString(); _mszConfigUtilPath = _mszAppExternalFilesDir + File.separator + _mszConfigUtilFileName; _mszSMSReceiveRuleUtilPath = _mszAppExternalFilesDir + File.separator + _mszSMSReceiveRuleUtilFileName; } + + @Override + public void onTerminate() { + super.onTerminate(); + ToastUtils.release(); + } } diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AboutActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AboutActivity.java index 4b2236b..27a9c2d 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AboutActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AboutActivity.java @@ -11,9 +11,10 @@ import android.os.Bundle; import android.view.ViewGroup; import android.widget.LinearLayout; import androidx.appcompat.widget.Toolbar; -import cc.winboll.studio.libaes.winboll.APPInfo; -import cc.winboll.studio.libaes.winboll.AboutView; -import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; +import cc.winboll.studio.libaes.models.APPInfo; +import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; +import cc.winboll.studio.libaes.views.AboutView; import cc.winboll.studio.mymessagemanager.App; import cc.winboll.studio.mymessagemanager.R; @@ -64,13 +65,13 @@ public class AboutActivity extends WinBoLLActivity implements IWinBoLLActivity { ); layout.addView(aboutView, params); - App.getWinBoLLActivityManager().add(this); + WinBoLLActivityManager.getInstance().add(this); } @Override protected void onDestroy() { super.onDestroy(); - App.getWinBoLLActivityManager().registeRemove(this); + WinBoLLActivityManager.getInstance().registeRemove(this); } public AboutView CreateAboutView() { diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AppSettingsActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AppSettingsActivity.java index 03a3f3d..9353e97 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AppSettingsActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AppSettingsActivity.java @@ -12,13 +12,14 @@ import android.view.View; import android.widget.EditText; import android.widget.Switch; import android.widget.Toast; +import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; import cc.winboll.studio.libaes.views.AToolbar; import cc.winboll.studio.mymessagemanager.R; +import cc.winboll.studio.mymessagemanager.activitys.AppSettingsActivity; import cc.winboll.studio.mymessagemanager.utils.AppConfigUtil; -import cc.winboll.studio.mymessagemanager.utils.PermissionUtil; import cc.winboll.studio.mymessagemanager.utils.NotificationHelper; -import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog; +import cc.winboll.studio.mymessagemanager.utils.PermissionUtil; public class AppSettingsActivity extends BaseActivity { diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/ComposeSMSActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/ComposeSMSActivity.java index 1cfe18e..08fe588 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/ComposeSMSActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/ComposeSMSActivity.java @@ -5,6 +5,8 @@ package cc.winboll.studio.mymessagemanager.activitys; * @Date 2025/08/30 14:32 * @Describe 联系人查询与短信发送窗口 */ +import android.content.Intent; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; @@ -16,17 +18,13 @@ import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toolbar; -import android.content.Intent; -import android.graphics.drawable.Drawable; - import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; +import cc.winboll.studio.libappbase.LogUtils; +import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.beans.PhoneBean; import cc.winboll.studio.mymessagemanager.utils.PhoneUtil; import cc.winboll.studio.mymessagemanager.utils.SMSUtil; -import com.hjq.toast.ToastUtils; -import cc.winboll.studio.libappbase.LogUtils; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; 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 c5ec61c..2a873fd 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 @@ -29,6 +29,7 @@ import cc.winboll.studio.mymessagemanager.views.ConfirmSwitchView; import cc.winboll.studio.mymessagemanager.views.PhoneListViewForScrollView; import com.baoyz.widget.PullRefreshLayout; import java.util.ArrayList; +import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; public class MainActivity extends BaseActivity { @@ -298,7 +299,7 @@ public class MainActivity extends BaseActivity { i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } else if (nItemId == R.id.app_log) { - App.getWinBoLLActivityManager().startLogActivity(this); + WinBoLLActivityManager.getInstance().startLogActivity(this); } else if (nItemId == R.id.app_unittest) { Intent i = new Intent(MainActivity.this, UnitTestActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSRecycleActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSRecycleActivity.java index fa41486..fa8ea78 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSRecycleActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSRecycleActivity.java @@ -11,7 +11,7 @@ import android.view.MenuItem; import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog; +import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.SMSRecycleActivity; import cc.winboll.studio.mymessagemanager.adapters.SMSRecycleAdapter; diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SharedJSONReceiveActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SharedJSONReceiveActivity.java index 945da3c..f5a81a0 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SharedJSONReceiveActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SharedJSONReceiveActivity.java @@ -7,10 +7,13 @@ import android.text.TextUtils; import android.widget.TextView; import android.widget.Toast; import android.widget.Toolbar; +import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; import cc.winboll.studio.mymessagemanager.R; +import cc.winboll.studio.mymessagemanager.activitys.SMSReceiveRuleActivity; +import cc.winboll.studio.mymessagemanager.activitys.SharedJSONReceiveActivity; +import cc.winboll.studio.mymessagemanager.activitys.TTSPlayRuleActivity; import cc.winboll.studio.mymessagemanager.beans.SMSAcceptRuleBean; import cc.winboll.studio.mymessagemanager.beans.TTSPlayRuleBean; -import cc.winboll.studio.mymessagemanager.dialogs.YesNoAlertDialog; import cc.winboll.studio.mymessagemanager.utils.UriUtil; import java.util.ArrayList; diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/WinBoLLActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/WinBoLLActivity.java index 55c882a..979603b 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/WinBoLLActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/WinBoLLActivity.java @@ -9,9 +9,9 @@ import android.app.Activity; import android.os.Bundle; import android.view.MenuItem; import androidx.appcompat.app.AppCompatActivity; -import cc.winboll.studio.libaes.beans.AESThemeBean; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; +import cc.winboll.studio.libaes.models.AESThemeBean; import cc.winboll.studio.libaes.utils.AESThemeUtil; -import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity; public class WinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity { diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSAcceptRuleArrayAdapter.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSAcceptRuleArrayAdapter.java index a7c0d7d..99522a1 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSAcceptRuleArrayAdapter.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSAcceptRuleArrayAdapter.java @@ -15,10 +15,10 @@ import android.widget.EditText; import android.widget.RadioButton; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; +import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.beans.SMSAcceptRuleBean; import cc.winboll.studio.mymessagemanager.utils.SMSReceiveRuleUtil; -import com.hjq.toast.ToastUtils; import java.util.ArrayList; public class SMSAcceptRuleArrayAdapter extends RecyclerView.Adapter { diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSArrayAdapter.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSArrayAdapter.java index 8e5ed5a..513a0eb 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSArrayAdapter.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSArrayAdapter.java @@ -14,20 +14,20 @@ import android.widget.LinearLayout; import android.widget.PopupMenu; import android.widget.TextView; import android.widget.Toast; +import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; +import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.TTSPlayRuleActivity; +import cc.winboll.studio.mymessagemanager.beans.SMSAcceptRuleBean; import cc.winboll.studio.mymessagemanager.beans.SMSBean; -import cc.winboll.studio.mymessagemanager.dialogs.YesNoAlertDialog; +import cc.winboll.studio.mymessagemanager.utils.NotificationHelper; import cc.winboll.studio.mymessagemanager.utils.SMSReceiveRuleUtil; 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.views.DateAgoTextView; import cc.winboll.studio.mymessagemanager.views.SMSView; -import com.hjq.toast.ToastUtils; import java.util.ArrayList; -import cc.winboll.studio.mymessagemanager.beans.SMSAcceptRuleBean; -import cc.winboll.studio.mymessagemanager.utils.NotificationHelper; public class SMSArrayAdapter extends BaseAdapter { diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSRecycleAdapter.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSRecycleAdapter.java index adc06f8..2c622c5 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSRecycleAdapter.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/adapters/SMSRecycleAdapter.java @@ -20,11 +20,13 @@ import android.widget.PopupMenu; import android.widget.TextView; import android.widget.Toast; import androidx.recyclerview.widget.RecyclerView; +import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; +import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.TTSPlayRuleActivity; import cc.winboll.studio.mymessagemanager.beans.SMSBean; import cc.winboll.studio.mymessagemanager.beans.SMSRecycleBean; -import cc.winboll.studio.mymessagemanager.dialogs.YesNoAlertDialog; +import cc.winboll.studio.mymessagemanager.utils.AddressUtils; import cc.winboll.studio.mymessagemanager.utils.AppConfigUtil; import cc.winboll.studio.mymessagemanager.utils.SMSRecycleUtil; import cc.winboll.studio.mymessagemanager.utils.SMSUtil; @@ -32,9 +34,7 @@ import cc.winboll.studio.mymessagemanager.utils.TTSPlayRuleUtil; import cc.winboll.studio.mymessagemanager.utils.UserVisionSystemProtectModeUtil; import cc.winboll.studio.mymessagemanager.views.DateAgoTextView; import cc.winboll.studio.mymessagemanager.views.SMSView; -import com.hjq.toast.ToastUtils; import java.util.ArrayList; -import cc.winboll.studio.mymessagemanager.utils.AddressUtils; public class SMSRecycleAdapter extends RecyclerView.Adapter { diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/dialogs/YesNoAlertDialog.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/dialogs/YesNoAlertDialog.java deleted file mode 100644 index 651f154..0000000 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/dialogs/YesNoAlertDialog.java +++ /dev/null @@ -1,59 +0,0 @@ -package cc.winboll.studio.mymessagemanager.dialogs; - -/** - * @Author ZhanGSKen - * @Date 2024/05/30 09:53:26 - * @Describe 用户确定与否选择框 - */ -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; - -public class YesNoAlertDialog { - - public static final String TAG = "YesNoAlertDialog"; - - public static void show(Context context, String szTitle, String szMessage, final OnDialogResultListener listener) { - AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( - context); - - // set title - alertDialogBuilder.setTitle(szTitle); - - // set dialog message - alertDialogBuilder - .setMessage(szMessage) - .setCancelable(true) - .setOnCancelListener(new DialogInterface.OnCancelListener(){ - @Override - public void onCancel(DialogInterface dialog) { - listener.onNo(); - } - }) - .setPositiveButton("YES", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - // if this button is clicked, close - // current activity - listener.onYes(); - } - }) - .setNegativeButton("NO", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - // if this button is clicked, just close - // the dialog box and do nothing - dialog.cancel(); - } - }); - - // create alert dialog - AlertDialog alertDialog = alertDialogBuilder.create(); - - // show it - alertDialog.show(); - } - - public interface OnDialogResultListener { - abstract void onYes(); - abstract void onNo(); - } -} diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/services/MainService.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/services/MainService.java index 80ac087..6e2f656 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/services/MainService.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/services/MainService.java @@ -14,15 +14,14 @@ import android.content.IntentFilter; import android.content.ServiceConnection; import android.os.IBinder; import cc.winboll.studio.libappbase.LogUtils; +import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.MainActivity; -import cc.winboll.studio.mymessagemanager.beans.MessageNotificationBean; import cc.winboll.studio.mymessagemanager.receivers.SMSRecevier; import cc.winboll.studio.mymessagemanager.services.MainService; import cc.winboll.studio.mymessagemanager.utils.AppConfigUtil; import cc.winboll.studio.mymessagemanager.utils.NotificationHelper; import cc.winboll.studio.mymessagemanager.utils.ServiceUtil; -import com.hjq.toast.ToastUtils; public class MainService extends Service { 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 ccf834c..a3b36b5 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 @@ -11,7 +11,6 @@ import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.libapputils.utils.RegexPPiUtils; import cc.winboll.studio.mymessagemanager.beans.PhoneBean; import java.util.ArrayList; import java.util.Collections; diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/RegexPPiUtils.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/RegexPPiUtils.java new file mode 100644 index 0000000..111579d --- /dev/null +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/RegexPPiUtils.java @@ -0,0 +1,32 @@ +package cc.winboll.studio.mymessagemanager.utils; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @Author ZhanGSKen&豆包大模型 + * @Date 2025/12/09 11:10 + * @Describe .* 前置预防针 + * regex pointer preventive injection + * 简称 RegexPPi + */ +public class RegexPPiUtils { + + public static final String TAG = "RegexPPiUtils"; + + // + // 检验文本是否满足适合正则表达式模式计算 + // + public static boolean isPPiOK(String text) { + //String text = "这里是一些任意的文本内容"; + String regex = ".*"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(text); + /*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 ad1a843..58801a1 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 @@ -8,7 +8,6 @@ package cc.winboll.studio.mymessagemanager.utils; import android.content.Context; import android.util.JsonReader; import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.libapputils.utils.RegexPPiUtils; import cc.winboll.studio.mymessagemanager.beans.SMSAcceptRuleBean; import cc.winboll.studio.mymessagemanager.beans.SMSAcceptRuleBean_V1; import java.io.IOException; diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/SMSUtil.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/SMSUtil.java index 9fac511..2ead9a3 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/SMSUtil.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/SMSUtil.java @@ -18,8 +18,8 @@ import android.provider.Telephony; import android.telephony.gsm.SmsManager; import android.telephony.gsm.SmsMessage; import cc.winboll.studio.libappbase.LogUtils; +import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.mymessagemanager.beans.SMSBean; -import com.hjq.toast.ToastUtils; import java.util.ArrayList; public class SMSUtil { diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/TTSPlayRuleUtil.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/TTSPlayRuleUtil.java index d9792fd..e4d27b3 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/TTSPlayRuleUtil.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/TTSPlayRuleUtil.java @@ -10,14 +10,15 @@ import android.content.Intent; import android.os.Message; import android.util.JsonReader; import android.widget.Toast; +import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.TTSPlayRuleActivity; import cc.winboll.studio.mymessagemanager.beans.TTSPlayRuleBean; import cc.winboll.studio.mymessagemanager.beans.TTSPlayRuleBean_V1; import cc.winboll.studio.mymessagemanager.beans.TTSSpeakTextBean; -import cc.winboll.studio.mymessagemanager.dialogs.YesNoAlertDialog; import cc.winboll.studio.mymessagemanager.services.TTSPlayService; +import cc.winboll.studio.mymessagemanager.utils.FileUtil; import java.io.File; import java.io.IOException; import java.io.InputStream; diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/views/ConfirmSwitchView.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/views/ConfirmSwitchView.java index e2c4fdd..4eb835c 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/views/ConfirmSwitchView.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/views/ConfirmSwitchView.java @@ -8,8 +8,8 @@ import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.Switch; +import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.mymessagemanager.dialogs.YesNoAlertDialog; public class ConfirmSwitchView extends Switch { diff --git a/mymessagemanager/src/main/res/layout/remoteview.xml b/mymessagemanager/src/main/res/layout/remoteview.xml index 7a259e7..3384b0c 100644 --- a/mymessagemanager/src/main/res/layout/remoteview.xml +++ b/mymessagemanager/src/main/res/layout/remoteview.xml @@ -4,7 +4,6 @@ android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" - android:theme="@style/AppTheme" android:id="@+id/remoteviewLinearLayout1">