呼叫结束后获取EXTRA_CALL_DISCONNECT_CAUSE

时间:2015-10-27 06:21:41

标签: android broadcastreceiver telephony

我正在制作一款Android应用程序,需要监控何时断开呼叫并获取断开连接以进行更多操作。我使用广播接收器知道呼叫何时断开,但我仍然坚持要求断开连接。

以下是我的简要代码:

    final BroadcastReceiver phoneStateReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String state = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
            String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
            String cause = null;
            if (intent.hasExtra(TelecomManager.EXTRA_CALL_DISCONNECT_CAUSE)) {
                cause = intent.getExtras().getString(TelecomManager.EXTRA_CALL_DISCONNECT_CAUSE);
            }

            TextView callState = (TextView) findViewById(R.id.callState);
            callState.setText("Call State is: " + state + " " + number + " " + cause);
        }
    };

    btnStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            registerReceiver(phoneStateReceiver, new IntentFilter(TelephonyManager.ACTION_PHONE_STATE_CHANGED));

            btnStop.setEnabled(true);
            btnStart.setEnabled(false);
        }
    });

    btnStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            unregisterReceiver(phoneStateReceiver);

            btnStart.setEnabled(true);
            btnStop.setEnabled(false);
        }
    });

拜托,有人在这一点帮助我吗? 非常感谢。!!!

1 个答案:

答案 0 :(得分:1)

来自API-21文档,EXTRA_CALL_DISCONNECT_CAUSE& EXTRA_CALL_DISCONNECT_MESSAGE是TelecomManager.ACTION_PHONE_STATE_CHANGED的可选附件。看起来他们在AOSP代码中没有任何数据,并且在Nexus 5(L& M版本)上观察到。它已经留给OEM来实现和报告这些额外的任何数据。我正在寻找使用这些附加功能的任何设备。很高兴知道任何报告呼叫断开原因/消息的设备。