我正在制作一个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);
}
});
拜托,有人在这一点上帮助我吗?
非常感谢。!!!
最佳答案
根据API-21文档,EXTRA_CALL_DISCONNECT_CAUSE和EXTRA_CALL_DISCONNECT_MESSAGE是TelecomManager.ACTION_PHONE_STATE_CHANGED的可选附加项。看起来它们没有AOSP代码中的任何数据,并且在Nexus 5(L和M版本)上也是如此。 OEM已留给OEM实施和报告这些额外费用中的任何数据。我正在寻找使用这些额外功能的任何设备。非常高兴知道任何报告呼叫断开原因/消息的设备。