Android PhoneStateListener возвращает прошлые звонки

1

Im используя PhoneStateListener, чтобы узнать, когда телефон находится в активном вызове, и когда вызов заканчивается и регистрируется, он был во входящем или исходящем вызове. когда я устанавливаю слушатель, он работает как ожидается при первом вызове. Потерпите, что, хотя он все еще работает, он возвращает информацию для кулачного вызова, а также второго вызова. На третьем вызове он возвращает информацию для 3 вызовов и т.д. Как получить информацию только для активного вызова? Код ниже, любая помощь приветствуется

@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);
    }
};
Теги:
broadcastreceiver

1 ответ

3

Отвечая на мой вопрос. Этот код создает несколько прослушивателей для каждого вызова. Я должен остановить слушателя после завершения вызова с помощью следующей строки

tm.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню