From 8fe744406541838b3f37968c5685c44772c4f9f3 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sat, 13 Dec 2025 10:53:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=90=AF=E5=8A=A8=E4=B8=8E?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=A8=A1=E5=9D=97=E9=83=A8=E7=BD=B2=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=AE=8C=E6=88=90=EF=BC=8C=E5=BE=85=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E3=80=82=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../winboll/studio/contacts/MainActivity.java | 3 --- .../studio/contacts/services/MainService.java | 25 ++++++++++++++++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java index 4f4618d..f2f0f75 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java @@ -21,13 +21,11 @@ import android.widget.CheckBox; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; - import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; - import cc.winboll.studio.contacts.activities.SettingsActivity; import cc.winboll.studio.contacts.activities.WinBollActivity; import cc.winboll.studio.contacts.dun.Rules; @@ -43,7 +41,6 @@ import cc.winboll.studio.libaes.views.ADsBannerView; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogView; import com.google.android.material.tabs.TabLayout; - import java.util.ArrayList; import java.util.List; diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java b/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java index bcdad3a..3b49f11 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/services/MainService.java @@ -34,6 +34,7 @@ import java.util.TimerTask; * @Date 2025/02/13 06:56:41 * @Describe 拨号主服务,负责核心业务逻辑、守护进程绑定、铃声音量监控及通话监听启动 * 严格适配 Android API 30 + Java 7 语法规范 | 解决前台服务启动超时崩溃 + * 新增:统一在 mainService() 中启动电话监听服务 + 通话筛选服务 */ public class MainService extends Service { // ====================== 常量定义区(全硬编码,杜绝高版本 API 依赖) ====================== @@ -299,12 +300,24 @@ public class MainService extends Service { } /** - * 启动通话监听服务 + * 启动电话监听服务(原有:CallListenerService) */ private void startPhoneCallListener() { delayStartNonCoreService(CallListenerService.class); } + /** + * 新增:启动通话筛选服务(MyCallScreeningService,API 10+ 生效) + */ + private void startCallScreeningService() { + // 通话筛选服务仅 Android 10+(API 29+)支持,低版本跳过 + if (Build.VERSION.SDK_INT >= ANDROID_10_API) { + delayStartNonCoreService(MyCallScreeningService.class); + } else { + LogUtils.d(TAG, "startCallScreeningService: 系统版本低于 Android 10,不支持通话筛选服务,跳过启动"); + } + } + /** * 检查服务是否正在运行 */ @@ -404,9 +417,10 @@ public class MainService extends Service { mMainServiceThread = null; } - // 7. 强制停止所有子服务 + // 7. 强制停止所有子服务(新增:停止通话筛选服务 MyCallScreeningService) stopService(new Intent(this, AssistantService.class)); stopService(new Intent(this, CallListenerService.class)); + stopService(new Intent(this, MyCallScreeningService.class)); LogUtils.d(TAG, "onDestroy: 所有子服务已强制停止"); // 8. 清空静态实例,避免内存泄漏(不改动 Bean 配置) @@ -471,10 +485,13 @@ public class MainService extends Service { Rules.getInstance(this).loadRules(); LogUtils.d(TAG, "mainService: 黑白名单规则已加载"); - // 4. 启动电话监听服务 + // 4. 启动电话监听服务(原有:CallListenerService) startPhoneCallListener(); - // 5. 启动主业务线程 + // 5. 新增:启动通话筛选服务(MyCallScreeningService,API 10+ 生效) + startCallScreeningService(); + + // 6. 启动主业务线程 mMainServiceThread = MainServiceThread.getInstance(this, mMainServiceHandler); mMainServiceThread.start(); LogUtils.i(TAG, "mainService: 核心流程启动完成,主服务正常运行");