Nachdem ich mehrere Ressourcen und Fragen durchgespielt habe, habe ich immer noch ein Problem mit der Erkennung einer eingehenden SMS-Nachricht.BroadcastReceiver SMS_Received funktioniert nicht auf neuen Geräten
Der folgende Code zeigt die Grundlagen:
Rundfunkempfänger-Klasse, die Toast zeigt OnReceive
public class IncomingSms extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "something received", Toast.LENGTH_SHORT).show();
}
}
Einfach Manifest mit
<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 Empfänger und Berechtigungen Registrierung erklärt und registriert den Empfänger und hat prope r Berechtigungen. Darüber hinaus ist die Priorität auf MAX_INT oder 2147483647 festgelegt.
Mein Gerät ist Nexus 6P, mit Standard-Messenger-App installiert (ich habe auch Hangouts probiert). Die App zeigt meine Toasts immer noch nicht an. Nach dem Anprobieren eines älteren Samsung-Geräts wurden die Toasts ordnungsgemäß gedruckt.
Priority Ausgabe
ich auf der 6P eine App namens installiert Manifest-Viewer, die ich die manifest.xml von Anwendungen auf dem Gerät installiert sehen kann. Ich überprüfte die Manifeste von Messenger und Hangouts für den Empfänger des SMS-Tags und stellte fest, dass beide auch eine Priorität von 2147483647 angeben. Es scheint, als ob beide Messenger-Apps die Priorität maximal ausschöpfen, und sobald sie die Nachricht konsumieren Andere Anwendungen dürfen nicht eingreifen. Beachten Sie, dass es sich um Google-Apps handelt und nicht um Drittanbieter.
An diesem Punkt bin ich ganz verwirrt,:
- warum sollten sie das tun?
- wie umgehen?
Vielen Dank
Auch Nexus 6P. Danke, was ich brauchte! Danke – RJB
Danke, toller Beitrag, sehr hilfreich. Ich habe zwar den Eindruck, dass das Problem eher mit der API-Stufe 23 und nicht mit dem Nexus-Gerät zu tun hat. Und vielleicht solltest du beachten, dass die letzte Überschreibung nicht wirklich erforderlich ist, nur für Code-Copy-Zombies wie mich da draußen ;-) – anhoppe