Телефон не звонит после вызова RequestInterruptionFilter

В настоящее время я работаю над приложением, которое может изменить режим звонка устройства. Для этого я создал NotificationListenerService и из моего кода я звоню requestInterruptionFilter переключаться между режимами звонка. Здесь все отлично работает!

Теперь, когда я тестировал приложение, возникла следующая ситуация: мне позвонили на телефон, и вскоре после этого мой набор приложений INTERRUPTION_FILTER_ALL но мой телефон не звонил. Так что я попробовал то же самое в эмуляторе, где я могу контролировать телефонные звонки, и это происходит с тем же странным поведением: когда INTERRUPTION_FILTER_ALARMS установлен и звонок поступает, и мы затем устанавливаем INTERRUPTION_FILTER_ALL (до ответа на звонок) телефон не звонит.

У вас есть идеи, как мне добиться, чтобы телефон звонил в таких ситуациях?

РЕДАКТИРОВАТЬ: мой текущий код выглядит так:

public class NotificationService extends NotificationListenerService implements PhoneCallListener  {

    @Override
    public void onCreate() {
        super.onCreate();

        callReceiver = new CallReceiver(this);
        callReceiver.setListener(this);

        IntentFilter filter = new IntentFilter();
        filter.addAction(ACTION_PHONE_STATE_CHANGED);

        registerReceiver(callReceiver, filter);
     }

     @Override
     public void onPhoneCallIncoming(String phoneNumber) {
         requestInterruptionFilter(INTERRUPTION_FILTER_ALL);
     }

     @Override
     public void onPhoneCallEnded() {
         Log.d("cilenco", "Phone call ended");
    }
}

public class CallReceiver extends BroadcastReceiver {

    public void setListener(PhoneCallListener listener) {
        this.listener = listener;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if(ACTION_PHONE_STATE_CHANGED.equals(intent.getAction()) {
            String state = intent.getExtras().getString(EXTRA_STATE);
            String number = intent.getExtras().getString(EXTRA_INCOMING_NUMBER);

            if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) {
                listener.onPhoneCallIncoming(number);
            } else {
                 listener.onPhoneCallEnded();
            }
        }
    }
} 

0 ответов

Другие вопросы по тегам