2017-08-14 2 views
1

Gibt es eine Möglichkeit, die App zu erkennen, die die abgefangene SMS sendet?Android, Erkennen, welche App sendet SMS?

In meinem Code kann ich abgehende und eingehende SMS abfangen, Körper, Telefonnummer usw. lesen, aber ich weiß nicht, ob es eine Möglichkeit gibt, die App/Paket zu erkennen, die die SMS sendet. Ich habe gesucht, hatte aber kein Glück. Vielen Dank im Voraus. ich die unten Bibliothek bin mit Kurznachrichten abfängt:

Sms Radar on GitHub

Bitte beachte, dass ich nicht über die App zu sprechen, die die Standard-Messaging-Anwendung ist. Manchmal senden andere Apps wie WhatsApp SMS, um den Benutzer zu authentifizieren. Diese Art von SMS ist in Postausgängen/gesendeten Nachrichten nicht sichtbar, obwohl ich sie beim Senden/Empfangen erkennen kann.

Also ich will nur genau wissen, welche App (Paketname) gerade die SMS sendet.

Antwort

0

So habe ich einen Workaround gefunden. Wenn eine App eine Kurznachricht sendet, handelt es sich um einen Vordergrundprozess. Also habe ich gerade die Liste der Vordergrundprozesse bekommen, als mein onSMSSent() aufgerufen wurde und die App, die SMS sendet, am Anfang der Liste gefunden wurde.

Obwohl dies nicht eine feste Lösung sein könnte, aber wie @ Ch4t4r sagte, es scheint, gibt es keine Lösung, die SMS-sendende App direkt zu bekommen und der Trick klingt gut genug.

+0

Denken Sie daran, dass der Benutzer Ihnen die Nutzungsdaten explizit erteilen muss, bevor Sie auf die Vordergrund-Apps zugreifen können. 'startActivity (neue Absicht (Settings.ACTION_USAGE_ACCESS_SETTINGS));' Dies muss nur auf neueren Android-Versionen getan werden – Ch4t4r

1

AFAIK Sie können nicht erkennen, welche App die SMS sendet. Es ist nur nicht im Content-Speicher gespeichert.

Sie könnten jedoch eine fehleranfällige Problemumgehung verwenden:
Liste alle derzeit laufenden Apps, die die SEND_SMS-Berechtigung (möglicherweise auch mit Internet-Berechtigung) haben, wenn die SMS gesendet wird. Ein anderer (ungetesteter) Weg könnte darin bestehen, den Stack in onSmsSent() zu lesen, indem man Thread.currentThread().getStackTrace() benutzt, indem man über das zurückgegebene Array iteriert, bis man eine Anwendung erreicht, die SMS senden kann. Aber ich denke, das wird nicht funktionieren, da Android am ehesten Änderungen am Content-Speicher vornehmen wird.