呼叫接收方不接收电话意图的额外信息

时间:2015-07-01 15:16:25

标签: android android-intent broadcastreceiver phone-call android-dialer

我有一个打电话的活动:

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接收事件,都没有额外的。

为什么附加内容没有通过?

3 个答案:

答案 0 :(得分:0)

一切似乎都不错,但我可以看到:

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

intent.getStringExtra("MY_EXTRA")

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

答案 1 :(得分:0)

它不起作用。您无法在“ACTION_CALL”Intent中添加任意附加内容,并且期望这些附加内容会显示在广播的“NEW_OUTGOING_CALL”Intent中。没有任何方法可以将您自己的额外内容添加到“NEW_OUTGOING_CALL”广播Intent。您只能获得拨号器放入Intent的附加内容(如电话号码)。

答案 2 :(得分:0)

您发送的意图永远不会被广播接收者捕获。它触发呼叫,该呼叫发送它自己的广播意图。

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

您可以尝试使用SharedPreferences在发送意图的活动和BroadcastReciever之间保存状态。