You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何定位ACTION_AIRPLANE_MODE_CHANGED广播的发送源?

定位ACTION_AIRPLANE_MODE_CHANGED广播发送位置的高效方法
  • 全局源码精准搜索
    在AOSP源码根目录用repo grep或者IDE的全局搜索功能,直接定位发送该广播的代码。比如执行命令:

    repo grep "sendBroadcast.*ACTION_AIRPLANE_MODE_CHANGED" --include="*.java"
    

    或者搜索ACTION_AIRPLANE_MODE_CHANGED的所有引用,再筛选调用sendBroadcast/sendOrderedBroadcast的逻辑。AOSP中该广播的核心发送逻辑通常在frameworks/base/services/core/java/com/android/server/airplane/AirplaneModeController.java,这是系统管理飞行模式状态并发送广播的核心类。

  • 通过系统日志抓调用链
    不用修改源码,直接用adb抓取系统日志获取广播发送的调用栈:

    adb logcat -v threadtime | grep -A 10 -B 5 "ACTION_AIRPLANE_MODE_CHANGED"
    

    触发飞行模式开关后,日志会输出广播发送的完整调用链,从ActivityManagerService的日志里能直接看到发起广播的源头类和方法。

  • 断点调试追踪调用栈
    在PhoneAppBroadcastReceiver.onReceive方法加断点,当广播被接收时,查看调试器的调用栈信息。调用栈上层会清晰显示广播的发起方——如果是系统服务触发,能直接定位到对应服务类;如果是第三方应用触发,也能看到具体进程和方法。

  • 从设置入口反向追踪
    飞行模式开关通常从系统设置触发,可反向追踪逻辑:

    1. 找到设置中飞行模式开关的代码(比如packages/apps/Settings/src/com/android/settings/network/AirplaneModePreferenceController.java),查看它修改飞行模式状态的逻辑;
    2. 状态修改后,系统通过Settings.System的监听机制触发广播,最终由AirplaneModeController负责发送ACTION_AIRPLANE_MODE_CHANGED广播。

内容的提问来源于stack exchange,提问作者user19791436

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:34:58