После прохождения нескольких ресурсов и вопросов у меня по-прежнему возникает проблема с обнаружением входящего SMS-сообщения.BroadcastReceiver SMS_Received не работает на новых устройствах
Приведенный ниже код показывает основы:
Broadcast класс приемника, который отображает тост OnReceive
public class IncomingSms extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "something received", Toast.LENGTH_SHORT).show();
}
}
Простой Manifest с регистрацией приемника и разрешения
<application
<receiver
android:name=".IncomingSms"
android:permission="android.permission.BROADCAST_SMS"
android:exported="true">
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
код, приведенный выше заявляет и регистрирует получателя, и имеет prope r. Кроме того, приоритет установлен на MAX_INT или 2147483647.
Мое устройство Nexus 6P, с установленным по умолчанию программой Messenger (я также пробовал Hangouts). Приложение по-прежнему не показывает мои тосты. Попробовав более старый аппарат Samsung, тосты были напечатаны правильно.
Приоритетный вопрос
Я установил на 6P приложение под названием Manifest просмотра, который позволяет мне видеть manifest.xml приложений, установленных на устройстве. Я проверил манифесты как Messenger, так и Hangouts для получателя SMS-тега и обнаружил, что оба они также указывают приоритет 2147483647. Кажется, что оба этих мессенджера приложения превышают приоритет, и как только они потребляют сообщение, они не позволяют другим приложениям вмешиваться. Обратите внимание, что это акции Google, а не сторонние.
На данный момент, я совершенно запутался,:
- почему они это делают?
- Как обходить его?
спасибо
Также получил Nexus 6P. Спасибо, что мне нужно! Спасибо – RJB
Спасибо, большое сообщение, очень полезно. Хотя у меня сложилось впечатление, что проблема больше связана с уровнем API 23, а не с устройством Nexus. И, возможно, вы должны заметить, что последнее переопределение не требуется, просто для копирования кода зомби, как я там ;-) – anhoppe