gpt4 book ai didi

Android PhoneStateListener 返回过去的通话

转载 作者:行者123 更新时间:2023-11-29 18:19:49 28 4
gpt4 key购买 nike

我使用 PhoneStateListener 来查明电话何时处于 Activity 通话中以及通话何时结束并记录它是在来电还是去电中。当我安装监听器时,它在第一次调用时按预期工作。之后,尽管它仍然有效,但它会返回第一次调用和第二次调用的信息,在第 3 次调用时,它会返回 3 次调用的信息等。如何只获取 Activity 通话的信息​​?下面的代码,任何帮助表示赞赏

@Override
public void onReceive(Context context, Intent intent) {
mContext = context;
mIntent = intent;
mlocManager= (LocationManager)mContext.getSystemService(Context.LOCATION_SERVICE);
mlocListener = new MyLocationListener();

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int events = PhoneStateListener.LISTEN_CALL_STATE;
tm.listen(phoneStateListener, events);
}


private final PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
Log.e("GO", incomingNumber);



String number = null;
String callState = "UNKNOWN";
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
callState = "IDLE";
break;
case TelephonyManager.CALL_STATE_RINGING:
// -- check international call or not.
callState = "INCOMING";
number = incomingNumber;

break;
case TelephonyManager.CALL_STATE_OFFHOOK:
number = mIntent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

callState = "OUTGOING";

break;
}




super.onCallStateChanged(state, incomingNumber);
}
};

最佳答案

回答我自己的问题。此代码为每个调用创建多个监听器。通话以以下行结束后,我必须停止听众

tm.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);

关于Android PhoneStateListener 返回过去的通话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126818/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com