我有一个打电话的活动:
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接收事件,都没有额外的。
为什么附加内容没有通过?
答案 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之间保存状态。