【发布时间】:2021-07-15 10:08:50
【问题描述】:
我想只收到来自 PhoneStateListener 的活动呼叫。 我已经使用 onCallStateChanged 方法创建了侦听器。 一旦我拨号(并接听电话),状态就已经摘机。
嗯,这并不让我感到惊讶,因为API 中的文字: 设备通话状态:摘机。至少存在一个正在拨号、活动或保持的呼叫,并且没有呼叫正在振铃或等待。
但是有没有可能只收到活跃的电话?
【问题讨论】:
标签: android
我想只收到来自 PhoneStateListener 的活动呼叫。 我已经使用 onCallStateChanged 方法创建了侦听器。 一旦我拨号(并接听电话),状态就已经摘机。
嗯,这并不让我感到惊讶,因为API 中的文字: 设备通话状态:摘机。至少存在一个正在拨号、活动或保持的呼叫,并且没有呼叫正在振铃或等待。
但是有没有可能只收到活跃的电话?
【问题讨论】:
标签: android
根据我在 nexus 上的尝试,主动呼叫唤醒 CALL_STATE_OFFHOOK, 尝试使用日志文件查看步骤。
试试这个..
private PhoneStateListener mPhoneListener = new PhoneStateListener() {
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG, "ringing goes here");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(TAG, "Active call goes here");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.d(TAG, "CALL STATE IDLE goes here");
break;
default:
Log.d(TAG, "Unknown state=" + state);
}
}
然后调用它:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
tm.listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}
不要忘记为您的 Mainifest 文件添加权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
【讨论】: