如何通过附加到广播接收器,启动时ACTION_CALL(How to pass Extra to B

2019-08-01 05:02发布

我开始从我的活动新的呼叫。 并试图通过一个布尔额外费用。

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

Answer 1:

您的自定义多存在于您用来启动“呼”活动的意向。 但它不是复制到NEW_OUTGOING_CALL被广播的实际调用机制的一部分意向。 这些2倍的操作是不同的,仅间接地彼此相关。 只有Android系统本身可以播放NEW_OUTGOING_CALL意图。

您不能添加自己的群众演员这个意图。 你需要想出另一种方式尽一切是你所要完成。



文章来源: How to pass Extra to BroadcastReceiver, when initiating ACTION_CALL