4

我正在从我的活动中发起新的呼叫。并试图传递一个额外的布尔值。

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>

基本上我期望 onReceive 看到我的额外内容,但不知何故它没有通过:

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
4

1 回答 1

3

您的自定义额外内容存在于您用于启动“呼叫”活动的 Intent 中。但它不会被复制到NEW_OUTGOING_CALL作为实际调用机制的一部分广播的 Intent 中。这两个操作是不同的,并且只是彼此间接相关。只有 Android 系统本身可以广播NEW_OUTGOING_CALLIntent。

您不能将自己的附加内容添加到此 Intent。你需要想出另一种方法来完成你想要完成的任何事情。

于 2012-10-08T06:58:16.527 回答