Android abortBroadcast не останавливает вещание смс - PullRequest
6 голосов
/ 11 октября 2011

в моем методе 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();
}   

где number = "29853" - номер сообщения, от которого я хочу перехватить, а не сохранить в папке "Входящие".

Этот код работает правильно - если смс с номера, первый тост работает и печатает содержание сообщения, если смс не с номера «Не с нужного номера». Проблема в том, что 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 ]

8 голосов
/ 19 ноября 2012

переместите android:priority в фильтр намерений, к которому он относится.

 <intent-filter android:priority="9999999"> 

, тогда у вас, скорее всего, будет приоритет, и ваша отмена будет работать.Я проверил это, и оно работает.

4 голосов
/ 15 сентября 2014

С Android 4.4 вы не можете прервать эти трансляции.Вот ссылка на источники AOSP, которые показывают это:

https://github.com/CyanogenMod/android_frameworks_opt_telephony/blob/d43b5b1ca91e0aac0c697546a5cb341ffa758e0b/src/java/com/android/internal/telephony/ImsSMSDispatcher.java#L605

3 голосов
/ 12 октября 2011

abortBroadcast() не УДАЛИТЬ сообщения из входящих сообщений, это просто подавление уведомления в строке состояния.Чтобы удалить смс из почтового ящика, обратитесь к этой ссылке

1 голос
/ 13 октября 2011

Я использовал это некоторое время назад, и это работало, я мог отклонить некоторые сообщения, но теперь это не работает. Я думаю, что Android больше не позволяет пользователю получить полный контроль над событием SMS_RECEIVED.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...