# Apps durchsuchen nach verwendeter Methode



## kpat (17. Jan 2012)

Hallo,

bin gerade erst in Android eingestiegen, also endschuldigt bitte falsche Benennungen.

Ist es möglich aus einem eigenem Programm, über das System in Erfahrung zu bringen welche Apps installiert sind? Wie kann man über die Installierten Apps iterieren?

Ich möchte schauen, welche Anwendung eine spezielle Methode unterstützt. Dies kann ich mit Reflection leicht prüfen, sobald ich dort angekommen bin.

Ich weiß, dass das System den User fragt welche Anwendung verwendet werden soll, wenn eine spezielle Action? von mehreren Anwendungen implementiert wird. Ich möchte nur sehen, wer eine Action zumindest im Code verwenden könnte. Da ich weitere Dinge konfigurieren möchte bräuchte ich diese Information.


Viele Grüße,

Pat


----------



## schlingel (17. Jan 2012)

Wenn du meinst, welche Apps welche Intent-Handler parat halten gibt es eine Lösung. Die Binaries der anderen Apps nach einer bestimmten Java-Methode zu durchsuchen halte ich allerdings für Unsinn. Da sollte man noch einmal die Doku studieren ob es nicht einen besseren Weg gibt zu erreichen was du möchtest.

Da du aber von der App-Auswahl sprichst die üblicherweise beim Absetzen eines Intents auftritt gibt es bereits fix fertig eine Möglichkeit: mit queryIntentActivities bekommst du alle Apps die einen bestimmten Intent unterstützen. Siehe auch hier.

Frage: Wofür brauchst du das?


----------



## kpat (17. Jan 2012)

Hallo,

danke für den Tipp! Ich habe entdeckt, wie man die aktiven Apps durchsuchen kann. So ist es ja noch besser.

Ich habe zum Beispiel daran gedacht einen Service zu haben. Diesen Service kann ich ja auch für fremde Aps anbieten, indem ich eine Schnittstelle dafür definiere (Intent).
Jetzt hätte ich gerne bei mir eine Activity, welche schaut, wer alles meinen Intent benutzen würde (Smartphone). So könnte ich generisch eine Liste aller Apps erlangen und dann bei mir zusätzlich etwas für jede App konfigurierbar machen.

Das hätte den Vorteile, dass man bei mir in der Konfiguration alles einstellen kann. Ansonsten müßte jeder Verwender meines Intents selbst eine Auswahl haben, falls ich z.B. mehrere Zugriffe habe.

Bsp:

Synchronisation- Service 

Ich habe ein Interface ISync


```
public interface ISync
{
 void OnNewData();
 SaveData(Object Data);
}


internal class Sync : Isync
{

private SyncSettings settings;

private event<Eventhandler> NewData;

public SaveData(Object Data);

...
}
```
--------------------------------

Nach außen kann man einfache Intends anbieten, die einem erlauben Daten zu speichern und informieren, wenn es ein update gibt. Intern könnte ich ein Menü haben, wo der User applikationsspezifisch Eigenschaften zur Synchronisation einstellen kann, wie (Nur Wlan, checkInterval, real time, not in night hours ... etc)

Ansonsten müßte ich die SynchronisationsProperty public machen und jeder Konsumer müßte dem User etwas anbieten, um es einstellbar zu machen. Das wäre lästig, denke ich.

Ich möchte möglichst einfache Intends anbieten, die andere Appentwickler sehr leicht verwenden können. Sonst würde es wahrscheinlich keiner unterstützen.



Viele Grüße,

Patrick


----------



## schlingel (17. Jan 2012)

Du möchtest also für jede App die deinen Service nutzen möchte das ganze Prozedere für die Config extra anbieten?

Macht das wirklich so viel Sinn? Stell dir vor du hast 6 Apps installiert, würdest du wirklich bei der einen nur syncn wenn WLAN da ist aber die andere die ganze Zeit laufen lassen? Das würde ja kaum Vorteile bringen da ja der Service dann trotzdem läuft und fröhlich an der Batterie nagt.

Wenn du es aber trotzdem so umsetzt vergiss nicht auch ne Möglichkeit einzubauen das für alle Apps auf einmal konfigurieren zu können.


----------



## kpat (17. Jan 2012)

Hallo,

zugegeben, das hört sich in Verbindung mit einem sync- service nicht so schlau an.
Wobei, auch hier kann es Sinn machen. Man setzt default Werte für alle, wie, mache nie ein Sync, wenn keine WLAN- verbindung da ist.
Außer von dem Anbieter xx, da die so wichtig sind... Naja, subfolder usw. fremder Apps könnte ich ja eh nicht steuern. Das machen die Anderen natürlich besser selbst.


Ich mache auch keinen sync Service. Bei meinem würde es schon Sinn machen. Es gibt es auch eine default Einstellung. Für manche apps möchte man aber vielleicht etwas besonderes einstellen. Dafür wollte ich anbieten, Werte direkt bei mir setzen zu können.

Viele grüße,

Pat


----------

