Я только что получил обновление для Hangouts 2.0, установил его и включил SMS
→ Turn on SMS
. Теперь мое приложение, работающее под Android 4.3, больше не может получать SMS, т.е. Мой BroadcastReceiver для SMS_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, но вместо этого являются сообщениями "нового Hangouts", которые вызваны принимающих входящие SMS-сообщения. Таким образом, приложение Pebble также не может принимать входящие текстовые сообщения с помощью SMS_RECEIVED
.
На стороне примечания и не очень связаны с этой проблемой, потому что я все еще на Android 4.3 (но мое приложение предназначено для SDK уровня 19, Android 4.4 на случай, если это имеет значение) Блог разработчиков Google Android Developers о новый SMS API в Kitkat, сказал, что ничего не изменится для приложений, использующих только SMS_RECEIVED, и не пытайтесь писать SMS-сообщения поставщику SMS.
1 Я всегда считал, что трансляция SMS_RECEIVED прервана. Но Android 4.4 API-сайт говорит что-то другое: "... когда приходит новое SMS, прослушивая широковещательную рассылку SMS_RECEIVED_ACTION, которая является неприемлемой вещать..."