BroadcastReceiver SMS_Received funktioniert nicht auf neuen Geräten
achdem ich verschiedene Ressourcen und Fragen durchgearbeitet habe, habe ich immer noch ein Problem mit der Erkennung einer eingehenden SMS-Nachrich
Der folgende Code zeigt die Grundlagen:
Broadcast-Empfängerklasse, die Toast onReceive @ anzei
public class IncomingSms extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "something received", Toast.LENGTH_SHORT).show();
}
}
Simple Manifest mit der Registrierung von Empfänger und Berechtigungen
<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" />
Der obige Code deklariert und registriert den Empfänger und verfügt über die entsprechenden Berechtigungen. Außerdem ist die Priorität auf MAX_INT oder 2147483647 festgelegt.
ei meinem Gerät handelt es sich um Nexus 6P, auf dem die Standard-Messenger-App installiert ist (ich habe auch Hangouts ausprobiert). Die App zeigt meine Toasts immer noch nicht an. Nach dem Versuch mit einem älteren Samsung-Gerät wurden die Toasts ordnungsgemäß gedruckt.
Prioritätsproblem
Ich habe auf dem 6P eine App namens @ installierManifest Viewer, mit dem ich die manifest.xml der auf meinem Gerät installierten Apps sehen kann. Ich habe die Manifeste von Messenger und Hangouts auf den Empfänger von SMS-Tags überprüft und festgestellt, dass beide eine Priorität von 2147483647 angeben. Es scheint, als würden beide Messenger-Apps die Priorität maximal ausnutzen und sobald sie die Nachricht verbrauchen, sie Andere Anwendungen dürfen nicht eingreifen. Beachten Sie, dass es sich hierbei um Standard-Google-Apps und nicht um Apps von Drittanbietern handelt.
n diesem Punkt bin ich ziemlich verwirrt über:
Warum würden sie das tun?wie umgeht man es?Danke vielmal