以下是我用来检索传入,传出呼叫号码的代码:
if(arg1.getAction().equals("android.intent.action.PHONE_STATE")){
String state = arg1.getStringExtra(TelephonyManager.EXTRA_STATE);
if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
Log.d(TAG, "Inside Extra state off hook");
String number = arg1.getStringExtra(TelephonyManager.EXTRA_PHONE_NUMBER);
Log.e(TAG, "outgoing number : " + number);
}
else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
Log.e(TAG, "Inside EXTRA_STATE_RINGING");
String number = arg1.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.e(TAG, "incoming number : " + number);
}
else if(state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
Log.d(TAG, "Inside EXTRA_STATE_IDLE");
}
}
但是TelephonyManager.EXTRA_PHONE_NUMBER给了我一个错误,所以我无法得到拨出电话的号码!除此之外,我还想恢复通话的持续时间。请帮帮我。
答案 0 :(得分:1)
从这里提到的这个问题, How to detect incoming calls, in an Android device?
操作NEW_OUTGOING_CALL
会为您拨打电话号码,对于来电,您的代码可以正常使用。
if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) {
savedNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER");
}
除此之外,我还想恢复的持续时间 呼叫。请帮帮我
您只能通过通话记录获取通话的持续时间,或者如果从onOutgoingCallEnded
中的链接考虑上述答案,您可以减去开始和结束时间,但这又不会让您获得准确的时间,因为当呼叫被连接或应答时,OFF_HOOK
被触发,所以最好坚持呼叫记录一段时间。
因此,如果您正在使用链接中的上述代码,并希望在onOutgoingCallEnded
被触发后立即检测持续时间,请等待第二个adn,然后从通话记录中读取它然后将给出最新的条目,否则您将始终从通话记录中获取上一个条目。