Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android PhoneStateListener返回过去的调用_Android_Broadcastreceiver - Fatal编程技术网

Android PhoneStateListener返回过去的调用

Android PhoneStateListener返回过去的调用,android,broadcastreceiver,Android,Broadcastreceiver,我使用PhoneStateListener来找出手机何时处于活动通话状态以及通话何时结束,并记录它是在传入还是传出通话中。当我安装侦听器时,它会在第一次调用时按预期工作。尽管它仍然可以工作,但在第一次通话和第二次通话时,它都会返回信息,在第三次通话时,它会返回三次通话的信息,等等。 如何仅获取当前通话的信息?代码如下,如有任何帮助,将不胜感激 @Override public void onReceive(Context context, Intent intent) { mContex

我使用PhoneStateListener来找出手机何时处于活动通话状态以及通话何时结束,并记录它是在传入还是传出通话中。当我安装侦听器时,它会在第一次调用时按预期工作。尽管它仍然可以工作,但在第一次通话和第二次通话时,它都会返回信息,在第三次通话时,它会返回三次通话的信息,等等。 如何仅获取当前通话的信息?代码如下,如有任何帮助,将不胜感激

@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);