2012-05-22 3 views
0

Я делаю какую-то программу, которая удаляет нежелательные SMS с телефона (специальным фильтром).Android abortBroadcast() работает странно

Используется aborBroadcast() для прекращения отправки SMS.

В эмуляторе он работает нормально, на некоторых мобильных телефонах (я также тестировал Android 2.2).

Но в некоторых телефонах (Samsung, 2.3.3) это не останавливает SMS. И после того, как моя программа удалена, мобильный телефон снова получит ВСЕ sms, что было прервано.

Мой android.manifest код:

<receiver android:name=".SmsHandler" > 
    <intent-filter android:priority="2147483647" > 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

Мой код обработчика:

if msgText.contains(GlobalVars.getInstance().getFilterText())) { 
    abortBroadcast(); 
} 

Может быть, кто-нибудь может посоветовать мне?

ответ

2

Существует два типа трансляций, упорядоченных и неупорядоченных. Насколько я знаю, SMS - это неупорядоченная трансляция, и поэтому вы не можете ее прервать.

http://developer.android.com/reference/android/content/BroadcastReceiver.html#Security

Я не уверен, когда вы говорите, что он работает на некоторых устройствах. В идеале, это не должно быть сделано для широковещательной передачи SMS.

+0

Я проверил это простым кодом: if (isOrderedBroadcast()) sendToLog ("SMSIL", "Ordered."); else sendToLog ("SMSIL", "NOT Ordered."); И ведется вещание. – Andrey

+0

Странно. BTW, я попытался прервать эту трансляцию на эмуляторе 2.3, и это не сработает. Я совершенно уверен, что вы не можете прервать эту трансляцию. Как вы упомянули, это может работать на нескольких устройствах. –

+0

Одна вещь, которую я заметил, если вы установите приоритет 1000, http://developer.android.com/reference/android/content/IntentFilter.html#SYSTEM_HIGH_PRIORITY, похоже, работает на эмуляторе, на котором он не был , MAGIC !!!! –

Смежные вопросы