2

我有一个打电话的活动:

public void call(String number) {
    Intent intent = new Intent("android.intent.action.CALL");
    intent.setData(Uri.parse("tel:" + number));
    intent.putExtra("MY_EXTRA", "Hello");
    startActivity(intent);
    finish();
}

我为通话设置了广播接收器:

public class OutgoingCallReceiver extends BroadcastReceiver {
    @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("Extra", intent.getStringExtra("MY_EXTRA", "Default"));
        }
    }
}

并注册:

<receiver android:name=".OutgoingCallReceiver">
    <intent-filter android:priority="-1">
        <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</receiver>

广播接收器工作。但无论它是从拨号器还是从我的 Activity 接收事件,都没有多余的。

为什么额外的不通过?

4

3 回答 3

1

它不是那样工作的。您不能向“ACTION_CALL”添加任意附加内容,Intent并期望这些附加内容会出现在Intent广播的“NEW_OUTGOING_CALL”中。您无法将自己的附加内容添加到“NEW_OUTGOING_CALL”广播Intent。您只能获得拨号器放入的附加信息Intent(如电话号码)。

于 2015-07-02T09:03:34.407 回答
0

一切似乎都很好,但我可以看到:

http://developer.android.com/reference/android/content/Intent.html#getStringExtra(java.lang.String)

intent.getStringExtra("MY_EXTRA")

接受一个参数,没有像 getIntExtra() 等的默认值...

于 2015-07-01T15:45:27.493 回答
0

您发送的意图永远不会被广播接收器捕获。它触发调用,发送它自己的广播意图。

来电者无视您发送给它的任何其他附加信息;它不知道如何处理它们。

您可以尝试使用SharedPreferences来保存发送意图的活动和广播接收器之间的状态。

于 2015-07-03T14:50:59.050 回答