android abortBroadcast не останавливает sms от трансляции
в моем методе onReceive у меня есть этот код:
if (from.equals(number)) {
abortBroadcast();
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Not from needed number", Toast.LENGTH_SHORT).show();
}
where number = "29853" - номер сообщения, из которого я хочу поймать и не сохранять в папке "Входящие".
этот код работает правильно - если sms с номера первый тост работает, и он печатает содержимое сообщения, если sms не с номера "не с нужного номера" печатается. Проблема в том, что abortBroadcast не делает свою деловитость-сообщение с номера все еще находится в папке "Входящие" телефона, хотя приоритет получателя-1000:
<receiver android:name=".service_classes.MyReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"
android:priority="1000" />
</intent-filter>
</receiver>
в чем проблема-почему не работает abortBroadcast?
4 ответов
на abortBroadcast()
не удалить сообщения из папки "Входящие", это просто подавление уведомления в строке состояния. Чтобы удалить sms из папки "Входящие", обратитесь к этой ссылке
перемещение android:priority
к intent-фильтру, где он принадлежит.
<intent-filter android:priority="9999999">
тогда у вас, скорее всего, будет приоритет, и ваша отмена будет работать. Я испытывал его и он работает.
с Android 4.4 вы не можете прервать эти передачи. Вот ссылка на источники AOSP, которые показывают это:
Я использовал это некоторое время назад и он работал, я мог бы отклонить некоторые сообщения, чтобы показать, но это не работает сейчас. Я думаю, что android больше не позволяет пользователю полностью контролировать событие SMS_RECEIVED.