fremde App explizit aus eigener App starten

H

hootzter

Neues Mitglied
0
Hallo,

ich möchte aus meiner eigenen Anwendung heraus über einen Intent eine fremde App (in meinem Fall die App "MyNet" auf dem eeepad Transformer) starten. Leider weiß ich auch nach Recherche im Internet und lesen eines Androidbuches nicht, wie ich hier genau vorgehen muss. Wenn ich bisher bei den Intents alles richtig verstanden habe, dann kann man entweder explizit den Klassennamen einer App im Intent angeben oder man gibt im Intent z.B. die auszuführende Action an + die category aus dem Manifest der fremden App an. Leider kommt man aber an das Manifest der fremden App nicht dran und wie man den korrekten Klassennamen inkl. package einer fremden Appp herausbekommt, weiß ich nicht => Ich weiß nicht, wie ich das hinbekomme.

Es wäre super, wenn einer von euch eine Idee oder sogar eine Lösung hätte.

Gruß

hootzter
 
Es gibt Möglichkeiten an das Manifest einer fremden App ranzukommen.
Google mal nach APK Disassambler (dann solltest du im XDA Forum landen).

Was du auch noch brauchst, ist eine app mit der du vorhandene Apps mit anderen teilen kannst (z.B. MyAppSharer). Hiermit kannst du eine App z.B. per Email verschicken. Somit hast du die entsprechende APK Datei. Funktioniert aber nicht bei System Apps.

Mit dem Disassambler kannst du dir die APK Datei entpacken. Damit hast du das Manifest.
Gruß Heiko
 
Du kannst auf deinem Gerät mit Hilfe des Packackemanangers (android.content.pm.PackageManager) alle gewünschten Information über Insallierte Apps abrufen. Auch Paketnamen etc...
 
Danke für die Hilfreichen Antworten.

Ich habe es mit dem PacketManager versucht. Zuerst habe ich die App auf meinem Tablet gestartet, bin dann in die Einstellungen und auf Anwendungen gegangen, dann bei laufenden Anwendungen auf die gestartete App. Hier konnte ich dann schonmal den Paketnamen "com.asus.DLNA" ablesen. Anschließend habe ich mir mit folgendem Code und dem Debugger im Eclipse alle verfügbaren Aktivitäten des Pakets und alle Klassen angesehen.

Code:
PackageManager pm = getPackageManager();
        PackageInfo pI;
        try {
            pI = pm.getPackageInfo("com.asus.DLNA",pm.GET_ACTIVITIES);
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


Somit hatte ich also Paketname und auch die Klasse.
Nun konnte ich mit folgendem Code die App starten.

Code:
Intent intent = new Intent(Intent.ACTION_MAIN);//Action_Main heißt Hauptklasse
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
       
        intent.setClassName("com.asus.DLNA", "com.asus.DLNA.DLNA");//genau spezifizieren, was aufgerufen werden soll, sonst kommt auswahl
 
        startActivity(intent);

Danke für die Hilfe:thumbup:
 

Ähnliche Themen

B
Antworten
4
Aufrufe
491
bb321
B
R
  • Robby1950
2
Antworten
23
Aufrufe
1.015
Robby1950
R
Manny87
  • Manny87
Antworten
11
Aufrufe
166
swa00
swa00
Zurück
Oben Unten