Я думаю, что это возможно.
В Android есть два вида трансляции,
- Обычные трансляции
- заказанные трансляции
Ссылка: BroadcastReceiver
Обычная трансляция не может блокировать, но заказанная может.
SMSReceiver - это заказанные трансляции.
В SMSDispatcher.java
void dispatch(Intent intent, String permission) {
// Hold a wake lock for WAKE_LOCK_TIMEOUT seconds, enough to give any
// receivers time to take their own wake locks.
mWakeLock.acquire(WAKE_LOCK_TIMEOUT);
mContext.sendOrderedBroadcast(intent, permission, mResultReceiver,
this, Activity.RESULT_OK, null, null);
}
Таким образом, мы можем зарегистрировать широковещательный приемник и установить Android: приоритет большого числа
и abortBroadcast()
в вашем приемнике. Я думаю, это может сработать.