TelephonyManager не успевает вовремя сработать
Пытаюсь сделать приложение для android, которое бы отклоняло входящий звонок по определенной маске номера и при этом на устройстве не должен сработать звонок и вибрация. Принципиально все работает. Но если у телефона выставлена вибрация вместо звонка, то телефон успевает начать вибрировать, а уже потом срабатывает бесшумный режим и сброс звонка. Есть ощущение, что тот метод, которым я делаю не успевает вовремя сработать и перевести в бесшумный режим.
Подскажите, пожалуйста, как точно отловить входящий звонок до вибрации?
----------
public class IncomingCallReciever extends BroadcastReceiver {
private Context mContext;
private Intent mIntent;
Integer WasState;
@Override
public void onReceive(Context context, Intent intent) {
mContext = context;
mIntent = intent;
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) {
String callState = "UNKNOWN";
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
callState = "IDLE";
break;
case TelephonyManager.CALL_STATE_RINGING:
//Идет звонок
//Перевожу в режим не беспокоить
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
//Тут проверки номера по маске и сброс звонка
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
AfterCall();
break;
}
Log.i(">>>Broadcast", "onCallStateChanged " + callState);
super.onCallStateChanged(state, incomingNumber);
}
};