我正在从我的活动中发起新的电话。并尝试传递一个布尔额外的。
public class CallInitiatingActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + number));
intent.putExtra("com.demoapp.CUSTOM_CALL", true);
startActivity(intent);
}
}
我还注册了BroadcastReceiver,它会侦听传出呼叫:
<receiver android:name=".OutgoingCallListener" android:exported="true" >
<intent-filter android:priority="0" >
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
基本上我期待的东西可以看到我的额外内容,但不知何故它没有通过:
public class OutgoingCallListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
for (String key : extras.keySet()) {
Log.i(Constant.LOG_TAG, key + ": " + extras.get(key));
}
}
}
输出:
android.phone.extra.ALREADY_CALLED:false
android.intent.extra.PHONE_NUMBER:+370652xxxxx
com.htc.calendar.event_uri:null
android.phone.extra.ORIGINAL_URI:tel:+370652xxxxx
答案 0 :(得分:3)
您用于启动“通话”活动的意图中存在您的自定义额外费用。但它不会被复制到作为实际调用机制的一部分广播的NEW_OUTGOING_CALL
Intent中。这两个操作是不同的,只是间接相互关联。只有Android系统本身才能广播NEW_OUTGOING_CALL
意图。
您无法为此Intent添加自己的额外内容。你需要想出另一种方法来做你想要完成的任何事情。