Включение поддержки SMS в Hangouts 2.0 отключает BroadcastReceiver SMS_RECEIVED в моем приложении
Я только что получил обновление для Hangouts 2.0, установил его и включилSMS
→ Turn on SMS
, Теперь мое приложение, работающее под Android 4.3, больше не может получать SMS, т.е. мой BroadcastReceiver forSMS_RECEIVED
больше не называется. :-(
Как только я отключуTurn on SMS
В Hangouts 2.0 мое приложение снова может получать сообщения SMS_RECEIVED.
Приемник вещания зарегистрирован в Манифесте вот так
AndroidManifest.xml
…
<receiver android:name=".SMSReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
…
SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver {
private static final Log LOG = Log.getLog();
@Override
public void onReceive(Context context, Intent intent) {
LOG.d("onReceive");
…
}
}
Я уже пытался изменить приоритет приемника на INT_MAX или 999, который являетсянаивысший возможный приоритет из документации по фильтру намерений, но безуспешно.я знаю этоSMS_RECEIVED
намерения отправляются по заказу, и приложения с высоким приоритетом могут прервать трансляцию.1 Но кажется маловероятным, что Hangouts 2.0 регистрируетSMS_RECEIVED
приемник с высоким приоритетом и вызовabortBroadcast()
, следовательно, не позволяя другим приложениям получать намерения.
Что еще больше смутило меня, так это то, что мой Pebble все еще может получать SMS, даже с Hangouts 2.0 в качестве стандартного SMS-приложения. Интересно, чем Pebble отличается? Я только что заметил, что уведомления о входящих SMS-сообщениях на моем Pebble больше не являются уведомлениями о новых SMS-сообщениях, полученных приложением Pebble, а представляют собой уведомления о «новых сообщениях видеовстречи», вызванные видеовстречами, получающими входящие SMS-сообщения. Таким образом, приложение Pebble также не может получать входящие текстовые сообщения сSMS_RECEIVED
.
С другой стороны, я не очень связан с этой проблемой, потому что я все еще на Android 4.3 (но мое приложение предназначено для уровня SDK 19, на Android 4.4, если это имеет значение). Блог Google для разработчиков Android оновый SMS API в Kitkat, сказал, что ничего не изменится для приложений, использующих только SMS_RECEIVED, и не пытайтесь записать SMS для поставщика SMS.
1 Я всегда считал, что трансляция SMS_RECEIVED прерывается. НоСайт API Android 4.4 говорит что-то другое: «… когда приходит новое SMS, слушая трансляцию SMS_RECEIVED_ACTION, которая являетсябез Отменяется вещать ...»