Телефон не звонит после вызова 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();
}
}
}
}