gpt4 book ai didi

android - TelephonyManager.CALL_STATE_IDLE 多次调用

转载 作者:行者123 更新时间:2023-11-29 16:10:47 31 4
gpt4 key购买 nike

我有一个类,一个电话状态的监听器。在此,当调用断开此线路时,

case TelephonyManager.CALL_STATE_IDLE:
Log.e(TAG, "CALL_STATE_IDLE");
break;

执行不止一次。这严重影响了我的要求。如果有人知道这个问题,请帮助我。

提前致谢

 public class IncomingCallListener extends BroadcastReceiver
{
private Context mContext;
private static final String TAG = "CustomBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent)
{
mContext = context;
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();
telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
Bundle bundle = intent.getExtras();
String phoneNr= bundle.getString("incoming_number");

}
public class CustomPhoneStateListener extends PhoneStateListener
{
private static final String TAG = "CustomPhoneStateListener";

@Override
public void onCallStateChanged(int state, String incomingNumber)
{
switch (state)
{
case TelephonyManager.CALL_STATE_RINGING:
if(!incomingNumber.equalsIgnoreCase(""))
{
Log.e(TAG, "CALL_STATE_RINGING");
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.e(TAG, "CALL_STATE_OFFHOOK");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.e(TAG, "CALL_STATE_IDLE");
break;
default:
break;
}
super.onCallStateChanged(state, incomingNumber);
}
}
}

最佳答案

将您的代码更改为:

public class IncomingCallListener extends BroadcastReceiver
{
private Context mContext;

private static final String TAG = "CustomBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent)
{
mContext = context;
Bundle extras = intent.getExtras();
if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);
Log.w("DEBUG", state);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING))
{
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();
telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
Bundle bundle = intent.getExtras();
String phoneNr= bundle.getString("incoming_number");
}
else{
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING))
{
// DO SOME CODE HERE...
}
else{
if (state.equals(TelephonyManager.CALL_STATE_OFFHOOK))
{
// DO SOME CODE HERE...
}
}
}
}

}
//YOUR CODE HERE...

关于android - TelephonyManager.CALL_STATE_IDLE 多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13620134/

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