Wie erkennt man, wenn der Benutzer eine andere App startet? (Android)

8

Ich versuche eine Anwendung zu erstellen, bei der meine Anwendung im Hintergrund ausgeführt wird und erkennt, wenn der Benutzer eine andere Anwendung startet, damit ich den Fluss von dort aus steuern kann. Um meine Anfrage zu veranschaulichen, möchte ich ein Beispiel angeben. Meine Anwendung läuft im Hintergrund (zB als Dienst) und der Benutzer hat gerade auf die Anwendung 'XYZ' geklickt. Ist es möglich, dass meine App erkennt, dass die App "XYZ" gestartet wurde? Mehr als nur zu erkennen, ob 'XYZ' Aktivität in den Vordergrund gerückt ist, möchte ich feststellen, ob 'XYZ' gestartet wurde oder nicht. Sagen Sie, jemand startet "WhatsApp Messenger", ich möchte wissen, ob meine App wissen kann, dass "WhatsApp Messenger" gestartet wurde.

EDIT: Viele Leute denken, ich versuche Malware zu bauen, aber ich bin es nicht. Ich versuche eine App für ein High School Projekt zu erstellen. Ich möchte eine Statistik, um zu sehen, wie oft ich meine Kamera als Teil eines Psychoprojekts benutze. : /

Vielen Dank im Voraus, Sumit.

    
Sumit Shyamsukha 05.07.2012, 14:35
quelle

5 Antworten

8

nicht sicher, ob dies der beste Weg ist, dies zu tun, aber es funktioniert, können Sie die logcat verwenden und sehen Sie sich die Ausgabe, können Sie diese Berechtigung verwenden

%Vor%

und verwende den folgenden Code:

%Vor%

und vergessen Sie nicht seine Erlaubnis auf Android-Manifest, Sie können diesen Code zu einem Thread hinzufügen, damit es funktioniert

    
Hip Hip Array 05.07.2012 14:48
quelle
3

Ja, Sie können die aufgerufene Anwendung finden, indem Sie Logcat verfolgen. Verfolgen Sie nur das ActivityManager -Tag mit dem info -I -Log.

Von adb shell Befehl ist,

%Vor%

Aus Ihrem Anwendungscode,

%Vor%

Und in Logcat finden Sie eine Zeile wie,

%Vor%

Wenn eine Anwendung gestartet wird.

Es ist eine Logcat-Ausgabe, die anzeigt, dass die Nachricht die Prioritätsstufe "I" und das Tag "ActivityManager" betrifft:

Aktualisierung:

Fügen Sie einfach die Berechtigung in der Manifestdatei Ihrer Anwendung hinzu,

%Vor%     
user370305 05.07.2012 14:46
quelle
1

Ich denke, Sie sollten sich die "App Protector" -Anwendungen in Google Play ansehen. Sie erkennen, dass der Benutzer eine andere Anwendung gestartet hat. Dies geschieht durch Lesen von Systemprotokollen. Versuchen Sie, LogCat zu öffnen und Protokolle zu lesen, nachdem Sie eine Anwendung auf dem Gerät gestartet haben. Du wirst überrascht sein.

Und wohin sollten Sie von dort gehen? Ich schätze, du solltest die aLogCat App ausprobieren. Es ist freen und open-source. Das wird Ihnen helfen, Protokolle zu lesen.

All dies wird von einigen Entwicklern als Sicherheitsverletzung in Android angesehen.

    
Igor Filippov 05.07.2012 14:46
quelle
1

Ich habe einen Dienst eingerichtet, der erkennen kann, ob andere Anwendungen gestartet werden. Ich habe es für Dialer gemacht. In ähnlicher Weise kann dies durch einen beliebigen Paketnamen ersetzt werden.

%Vor%

Hier gehe ich alle laufenden Aufgaben durch und überprüfe, ob es unsere beabsichtigte Anwendung ist. Wenn das der Fall ist, überprüfe ich, ob die Anwendung im Vordergrund ist und die Anwendung niemals mit der 'phoneLaunched'-Variable gestartet wird. phoneclosed wird verwendet, wenn die beabsichtigte Anwendung im Hintergrund ist und die Variable entsprechend eingestellt ist.

All dies ist in Service Klasse

implementiert     
Shashank G 13.07.2015 10:28
quelle
-2

In meinem Buch, in dem Sie die Frage gestellt haben, hört sich das an, als ob Sie eine App auf eine bestimmte Art und Weise manipulieren, die Ihr Dienst steuern kann, und grenzt an Malware-Jingx. Aber es wird nicht in Android funktionieren - einfach und einfach aufgrund der Berechtigungen jeder Anwendung ist anders. Dadurch sind jede App voneinander isoliert. Also, um Ihre Frage unverblümt zu beantworten, ist es Nein.

Wie die andere Antwort vorgeschlagen hat - Sie können den Logcat überwachen, aber ... dann wieder ... warum?

    
t0mm13b 05.07.2012 14:46
quelle

Tags und Links