2011-01-12 6 views
19

In questa app che sto sviluppando devo caricare/chiamare un'altra app già installata sul telefono. È un'applicazione solo per uso personale, quindi non c'è bisogno di controllare se l'altra app è installata - lo so che lo è.Chiamare un'app da un'altra app

Ho cercato su Google questo problema per ore, ma non riesco a trovare nulla che funzioni. Principalmente perché le linee guida per trovare il nome del pacchetto e il nome della classe sono davvero pessime.

Via cmd e adb Sono stato in grado di trovare che le informazioni relative all'applicazione che vorrei chiamare sono: pacchetto: /data/app/com.soundcloud.android-1.apk=com.soundcloud.android (questo è esattamente quello che ha detto nella finestra cmd.)

ho provato qualcosa di simile:

Intent i = new Intent(); 
i.setClassName("/data/app/com.soundcloud.android-1.apk", "com.soundcloud.android"); 
startActivity(i); 

Ma la mia app appena si blocca, invece. Ho usato il codice di cui sopra, perché qualcuno ha detto che questo potrebbe chiamare un app:

Intent i = new Intent(); 
i.setClassName("<package_name>","<Class Name(with package name)>"); 
startActivity(i); 

Qualcuno sa cosa scrivere veramente?

P.S .: la mia app non ha bisogno di informazioni su ciò che accade nell'app chiamata.

+0

Che non capisci circa? i.setClassName ("", ""); ? – Falmarri

+0

Non so cosa mettere in ognuno di questi parametri. O se funzionerà anche in questo modo. – eightx2

risposta

36

Utilizzare la PackageManager per ottenere un Intent per il pacchetto:

PackageManager pm = getPackageManager(); 
Intent intent = pm.getLaunchIntentForPackage("com.example.package"); 
startActivity(intent); 
+1

Grazie mille, ho usato l'opzione PackageManager, funziona come un incantesimo! – eightx2

+0

Il gestore pacchetti funziona, ma l'intento non funziona – DAS

+0

PackageManager funziona bene grazie mille ..... – naresh

1

La documentazione è here.

Penso che nel tuo esempio, com.soundcloud.android sia in effetti il ​​nome del pacchetto, quindi dovrebbe essere il primo argomento. Per il secondo, è ancora necessario capire la classe da utilizzare.

Se non si dispone del codice, è possibile controllare come scoprire la classe dall'apk con this.