andere sich öffnende Apps registrieren

  • Antworten:14
fileerror
  • Forum-Beiträge: 116

14.12.2014, 00:48:42 via App

Hallo,

ist es möglich (wenn ja, wie?) dass mein service es mitbekommt, wenn andere Apps geöffnet werden und diese am besten noch per Intent-Filter unterscheidet, so dass bestimmte sich öffnen dürfen und andere nicht?
Bin für jede Anregung dankbar.

Gruß fileerror

— geändert am 14.12.2014, 00:49:05

Antworten
pepperonas
  • Forum-Beiträge: 434

14.12.2014, 02:36:31 via Website

Hallo,
das wird schwierig.. Ohne Root wohl kaum möglich. (jedenfalls ist das meine Einschätzung... vielleicht kann dir jemand anderes Genaueres sagen - bin kein Hacker^^).

Open Source

Antworten
fileerror
  • Forum-Beiträge: 116

14.12.2014, 11:03:16 via Website

Naja der Broadcast-Receiver soll ja nur benachrichtigt werden, wenn sich eine App in den Vordergrund schieben will, und halt am besten z.B. den Filter android.intent.action.DIAL ignorieren.
Wie das Öffnen einer App dann unterbunden werden soll, ist schon wieder ein anderes Problem ;)

Antworten
Sven R.
  • Forum-Beiträge: 1.904

14.12.2014, 11:15:31 via App

Mit Google gefunden:

Detecten: http://stackoverflow.com/a/22303460
Killen: http://stackoverflow.com/a/6324104

— geändert am 14.12.2014, 11:20:06

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
fileerror
  • Forum-Beiträge: 116

14.12.2014, 12:36:05 via Website

Ja danke, das habe ich auch schon gefunden, aber das läuft darauf hinaus, dass man den Sevice dauerhaft in eine Schleife laufen lässt und immer wieder auf neue Prozesse checkt. Das ist aber nicht gerade die Lösung, nach der ich suche. Ich dachte da eher an einen Broadcast-Receiver, der halt nicht auf eine bestimmte Uhrzeit reagiert, sondern auf einen Launch.

Hoffe, das ist nicht die einzige Möglichkeit. :(

— geändert am 14.12.2014, 12:36:28

Antworten
Sven R.
  • Forum-Beiträge: 1.904

14.12.2014, 13:14:04 via App

Zitat von stackoverflow( http://stackoverflow.com/a/13643484 ):

You can't get a broadcast when someone starts any other app. The only thing you can do is start a service that polls and periodically checks if new apps have been started (using Reno's code above for example).

Also if you start this service when the phone starts you have a reasonably good solution.

Es geht wirklich nicht. Wäre auch eine sicherheitsbedenkliches Feature.

— geändert am 14.12.2014, 13:16:47

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
fileerror
  • Forum-Beiträge: 116

14.12.2014, 13:19:27 via Website

schade :(

Antworten
pepperonas
  • Forum-Beiträge: 434

14.12.2014, 23:15:59 via Website

Sven R.

Es geht wirklich nicht. Wäre auch eine sicherheitsbedenkliches Feature.

Genauso ist es. Jedenfalls nicht mit "normalen" Mitteln.. Letztlich hat jede Variable einen Speicherbereich, wer den kennt (bzw. herausfindet) und manipuliert, kann das System noch auf ganz andere Weise steuern (ein Crack funktioniert ja im Prinzip nicht anders). Aber gut möglich, dass so eine App direkt nach dem Hochladen herausgefiltert wird :)

Aber auch schon die Idee mit dem Prozess killen entspricht nicht den Regularien die Google für Android vorsieht.

Open Source

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.12.2014, 18:37:27 via Website

Hallo,
jetzt muss ich doch mal eine aussage hier in den Raum werfen:
Wenn das ganze wirklich so "unmöglich" wäre wier hier geschreiben ist, dann würde die App AVG aus dem Store das (auch ohne Root!) nicht können.
Bei dieser kann man nämlich angeben welche Apps sozusagen gesperrt sind also bei welchen Apps man eine eigens festgeletgte Pin benötigt.
Wenn ich das konzempt richtig verstehen ist hierfür auch ein Abfangen aller globalen Android Intents notwendig um dann zu Prüfen ob die App eine Sperre hat oder nicht.
Anders könnte ich mir die funktionsweise dieses Features nicht erklären (ausser man hat Root dann gibt es mehrere Möglichkeiten)

Was meint ihr dazu?

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

pepperonas

Antworten
pepperonas
  • Forum-Beiträge: 434

15.12.2014, 18:49:21 via Website

Das es "unmöglich" ist, habe ich nie gesagt.. :)
Aber so gesehen, hast du natürlich recht, ich habe gesagt, dass es mit "normalen" Mitteln nicht funktioniert.
Würde mich auch mal interessieren wie es AVG hinbekommt. Vielleicht ist die App aber auch aus dem NDK entstanden? Ich weiß es nicht, aber was du beschreibst (bzw. die gesamte Fragestellung) interessiert mich ebenfalls brennend.

Aus den Berechtigungen von AVG:

In-App-Käufe

Geräte- & App-Verlauf

Vertrauliche Protokolldaten lesen
Aktive Apps abrufen
Lesezeichen für Webseiten und das Webprotokoll lesen

Identität

Konten auf dem Gerät suchen
Konten hinzufügen oder entfernen

Kontakte/Kalender

Kontakte lesen
Kontakte ändern
Ohne Wissen der Eigentümer Kalendertermine hinzufügen oder ändern und E-Mails an Gäste senden

Standort

Genauer Standort (GPS- und netzwerkbasiert)
Ungefährer Standort (netzwerkbasiert)

SMS

SMS empfangen
SMS senden
SMS oder MMS bearbeiten
SMS oder MMS lesen

Telefon

Anrufliste bearbeiten
Telefonnummern direkt anrufen
Anrufliste lesen

Fotos/Medien/Dateien

USB-Speicher löschen
Zugriff auf geschützten Speicher testen
USB-Speicherinhalte ändern oder löschen
Auf Dateisystem des USB-Speichers zugreifen

Kamera/Mikrofon

Bilder und Videos aufnehmen

WLAN-Verbindungsinformationen

WLAN-Verbindungen abrufen

Geräte-ID & Anrufinformationen

Telefonstatus und Identität abrufen

Sonstige

Andere Apps schließen
Daten aus dem Internet abrufen
Einstellungen und Verknüpfungen für den Startbildschirm schreiben
Abonnierte Feeds erstellen
Alle Cache-Daten der App löschen
Beim Start ausführen
Lesezeichen für Webseiten setzen und das Webprotokoll aufzeichnen
Ruhezustand deaktivieren
Netzwerkverbindungen abrufen
Verknüpfungen installieren
Andere Apps schließen
Verknüpfungen deinstallieren
Audio-Einstellungen ändern
Bildschirmsperre deaktivieren
Synchronisierung aktivieren oder deaktivieren
Über anderen Apps einblenden
Pairing mit Bluetooth-Geräten durchführen
Systemeinstellungen ändern
Zugriff auf alle Netzwerke
Auf Bluetooth-Einstellungen zugreifen
Wörter zu meinem Wörterbuch hinzufügen
Speicherplatz der App ermitteln
Akkudaten lesen
WLAN-Verbindungen herstellen und trennen
Synchronisierungseinstellungen lesen
Vibrationsalarm steuern

Und du hast Recht, "Andere Apps schließen" findet sich dort. Das werde ich mir jetzt auch mal genauer ansehen :)

Hmm, sieht wohl sehr danach aus, als wenn es einen speziellen Berechtigungsbaum gibt, den Drittanbieter-Apps* nicht nutzen können.

Hier ein paar grundlegende Infos:
antivirus Android
Berechtigung: WRITE_APN_SETTINGS
eine Diskussion dazu...

Also ganz so einfach scheint es nicht zu sein, das System als "Admin" per App zu steuern...

zum * -> vielleicht ist AVG auch von Google als vertrauenswürdig eingestuft und genießt deswegen eine Sonderstellung was die Definition "Drittanbieter" betriefft? (nur eine Vermutung)

Vielleicht weiß ja jemand anderes noch mehr...

— geändert am 15.12.2014, 19:04:03

Open Source

Antworten
fileerror
  • Forum-Beiträge: 116

15.12.2014, 19:03:10 via Website

Na ich denke jetzt wird es doch noch interessant. Ich habe auch so in Erinnerung, dass es auch andere Apps gibt, mit denen man bestimmte Apps blocken kann. So wie einen Gäste-Modus oder so, bei dem nur auf bestimmte Sachen zugegriffen werden kann.

Gruß fileerror

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

15.12.2014, 20:34:02 via App

Du kannst per Service lauschen, was für Apps gestartet werden (genauer gesagt, welche gestartet sind) und dann entsprechend darauf reagieren.

http://stackoverflow.com/questions/3290936/android-detect-when-other-apps-are-launched

Herzliche Grüße

Carsten

— geändert am 15.12.2014, 20:34:18

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
fileerror
  • Forum-Beiträge: 116

16.12.2014, 10:03:03 via Website

Wenn so ein Service ständig im Hintergrund läuft und sagen wir mal alle paar Sekunden checkt, ob sich was getan hat: Wie sieht das mit den Recourcen aus? Belastet das das System sehr oder zieht den AKKU leer oder ist das zu vernachlässigen? Da fällt mir ein: der Sevice müsste ja nur laufen, wenn das Handy entsperrt ist. Dann sollte das mit den Recourcen ja kein Problem darstellen ;)

Aber ist das überhaupt möglich dem BroadcastReceiver 2 Bedingungen zu übergeben? z.B.: starte den Sevice zwischen 7:00 und 15:00, aber nur, wenn das Handy entsperrt wird?

Gruß fileerror

— geändert am 16.12.2014, 10:13:10

Antworten
pepperonas
  • Forum-Beiträge: 434

16.12.2014, 13:09:23 via Website

Wenn dein Service alle paar Sekunden etwas checkt ist es möglich dass das Telefon nie in den Deep Sleep kommt. Batterydraining ist die Folge.
Wie stark der Akku letztlich belastet wird hängt sowohl von dem Gerät als auch von der Android-Version ab. Pauschale Aussagen kann man eher schwer treffen (jedenfalls ist das meine Erfahrung).

Aber ist das überhaupt möglich dem BroadcastReceiver 2 Bedingungen zu übergeben? z.B.: starte den Sevice zwischen 7:00 und 15:00, aber nur, wenn das Handy entsperrt wird?

Hmm, warum nicht schon vorher auf "Gültigkeit" prüfen und nur dann senden, wenn alles i.O.?

Open Source

Antworten