在Android中,我应该如何知道这个广播来自哪里?

问题描述 投票:0回答:1

AOSP源码中: 包/服务/电话/src/com/android/phone/PhoneGlobals.java

    /**
     * Receiver for misc intent broadcasts the Phone app cares about.
     */
    private class PhoneAppBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
                boolean airplaneMode = intent.getBooleanExtra("state", false);
                handleAirplaneModeChange(airplaneMode);

这是一个广播接收器,但不知道广播发送到哪里。发送广播的地方太多了

我能想到的方法: 在所有发送广播的地方添加日志。我至少要添加几十条日志,然后在某段代码中判断是否发送了特定的广播。

java android
1个回答
0
投票

您可以使用

Intent
额外内容作为标识符来找出意图来自何处。

在每个调用广播代码的地方,您可以:

intentToBroadcast.putExtra("origin", "your_unique_identifier");

在广播接收器上您可以:

String origin = intent.getStringExtra("origin");
//if-else ladder, switch case etc.

我会使用 Constants 类中定义的常量整数基元来表示调用广播的每个类。

© www.soinside.com 2019 - 2024. All rights reserved.