BroadcastReceiver in einer anderen App unterdrücken / blockieren

8

Go SMS kürzlich aktualisiert mit einer neuen Funktion "Andere Benachrichtigung deaktivieren". Die Funktion bewirkt, dass andere Anwendungen, die die eingehende SMS-Übertragung abhören, nicht ausgelöst werden. Zum Beispiel hört meine Anwendung, Shady SMS, die eingehende SMS-Sendung, um Benachrichtigungen zu senden und die SMS-Nachricht tatsächlich zu extrahieren und zu speichern.

Wenn diese neue Funktion in Go SMS aktiviert ist, sendet Shady keine Benachrichtigung oder speichert die Nachricht nicht auf die eingehende SMS-Übertragung.

Go SMS muss den Broadcast-Empfänger meiner Anwendung irgendwie abmelden, da die eingehende SMS-Übertragung nicht abgebrochen werden kann. Mein Intent-Filter ist auf Android: Priorität="0" eingestellt.

Irgendwelche Gedanken?

    
Noah Seidman 06.07.2011, 17:07
quelle

5 Antworten

12
  

Mein Intent-Filter ist auf Android: Priorität="0" eingestellt.

Dies ist die niedrigste mögliche Priorität. Alle anderen Anwendungen erhalten zuerst ihre Chance, bevor sie zu Ihnen kommen. Zitieren Sie die Dokumentation :

  

Er steuert die Reihenfolge, in der Broadcast-Empfänger zum Empfang von Broadcast-Nachrichten ausgeführt werden. Diejenigen mit höheren Prioritätswerten werden vor denen mit niedrigeren Werten aufgerufen. (Die Reihenfolge gilt nur für synchrone Nachrichten; sie wird für asynchrone Nachrichten ignoriert.)

Also rufen sie einfach abortBroadcast() auf. Sie haben wahrscheinlich ihre Priorität auf dem Dach.

    
CommonsWare 06.07.2011, 17:11
quelle
20

GoSMS hat die Priorität 2147483647, aber das ist nicht "maximal" (es ist die größte ganze Zahl) - es ist zu hoch. Die Android-Dokumentation für SYSTEM_HIGH_PRIORITY lautet 1000 (http://developer.android.com/reference/android/content/IntentFilter.html#SYSTEM_HIGH_PRIORITY) und die App-Prioritätsstufen sollten darunter liegen - es handelt sich nicht um eine System-App.

Dies wird zu unvorhersehbarem Verhalten führen. (GoSMS schließt nicht immer andere App-Benachrichtigungen ab - der abortBroadcast funktioniert nur, wenn er zuerst abgerufen wird, normalerweise basierend auf der Installationsreihenfolge, aber nicht immer.) Apps auf Systemebene werden ausgeführt, dann versucht Android, nicht systemspezifische Apps zu sortieren. Wenn Sie sich den Quellcode ansehen, richtet sich die Reihenfolge der Ausführung nach der Prioritätsebene, aber die Aufrufe zur Auswahl der Reihenfolge von Apps sind für Apps über 999 oder für Apps mit derselben Prioritätsstufe nicht konsistent. Es könnte in der Reihenfolge der Installation sein, aber Systemänderungen können zu anderen Ausführungsreihenfolgen führen (was ich oft beim Testen gesehen habe).

Das sollte wirklich von GoSMS (und vielen anderen Apps, die es falsch haben) behoben werden. Nur weil "Priorität" eine ganze Zahl ist, bedeutet dies nicht, dass der höchste Wert der Ganzzahl für die höchste Prioritätsebene gilt. (Genauso wie eine Web-URL eine Zeichenfolge ist, aber nicht alle Zeichenfolgenwerte gültig sind.) GoSMS sollte außerdem wissen, dass andere Anwendungen SMS-Nachrichten verarbeiten möchten, die für den Benutzer nicht sichtbar sind. Wenn sie es erfassen und dem Benutzer anzeigen, ist das sinnlos.

    
Jim 29.07.2011 17:52
quelle
3

Ich denke, wir haben eine Lösung dafür gemacht und es hat funktioniert :) Wir starten den Broadcast Receiver über den Code

%Vor%

Das hat funktioniert und wir haben den Job erledigt.

    
Arunoda Susiripala 06.03.2012 14:14
quelle
2

Laden Sie apktool herunter Ссылка

download Auto-Zeichen Erstellt von Dave Da illest 1 Ссылка

im Ordner haben apktool und NICEBUTWRONGLYWRITTEN.APK extrahiert Lauf cmd in cmd apktool d -d NICEBUTWRONGLYWRITTEN.APK modif1 warten Gehe in dir modif1 finde die erste sichtbare XML-Datei, finde in diesem Wert V = 2147483647 (Suche nach der Nummer 2147483647) ersetze es durch 1 Schließen Sie die Dateispeicherung. Lauf im cmd Fenster apktool b -d modif1 / nachrichtendienst.apk warte, bis der Build abgeschlossen ist

Nehmen Sie builded newsmsapp.apk in das Verzeichnis mit signapk, fügen Sie es dort ein Lauf cmd CD in Verzeichnis mit signapk Art: sign newsms.app.apk

installieren Sie auf Ihrem Telefon newsmsapp.apk

erledigt.

    
NotXTAM 05.09.2011 09:45
quelle
0

Go SMS Pro Priorität ist maximal 2147483647 (2 ^ 31-1). Sie können diesen Wert auch einstellen. Wenn die Prioritäten gleich sind, wird das Android-Betriebssystem die "ältere" App bereitstellen, die Sie zuerst installiert haben. Ich sage das aus meiner Erfahrung, dass ich Google nicht in dieser Sache sagen kann.

    
Nemanja Kovacevic 15.07.2011 12:45
quelle

Tags und Links