2011-01-18 5 views
3

Je sais comment charger un fichier PDF sous Android. Mais si plus d'une visionneuse PDF est installée, Android affiche une liste de choix. Je veux charger mon fichier PDF avec une visionneuse PDF spécifique (disons DroidReader). Comment faire ça?Démarrer une application spécifique sur Android

+0

Merci Cristian, c'est bien. – Mudassir

Répondre

1

Indiquez ensuite le nom complet de l'activité:

Intent intent = new Intent(); 
    ComponentName comp = new ComponentName("com.package.name.of.droidreader", "com.package.name.of.droidreader.DroidReader"); 
    intent.setComponent(comp); 
    startActivity(intent); 

Pour savoir ce que le nom du package et l'activité sont, vous pouvez jeter un oeil à la sortie adb logcat: lorsque vous ouvrez une activité, il y sera connecté. Et, bien sûr, configurez l'intention correctement afin que le DroidReader sache quel fichier ouvrir.

Enfin, mais importante, vous devez entourer la méthode startActivity avec un bloc try-catch attraper le ActivityNotFoundException (je suis sûr que la plupart des combinés auront pas cette application spécifique).

+0

Merci pour la réponse rapide, Cristian. Laisse moi vérifier ça. – Mudassir

+0

@Cristian: S'il vous plaît dites-moi comment afficher une page dans la fenêtre dans DroidReader? Dois-je passer les extras? J'ai déjà posté la question, mais pas encore de réponse. http://stackoverflow.com/questions/4720443/passing-extras-to-droidreader – Greenhorn

+0

Vous aurez plus de chance si vous demandez directement aux auteurs de DroidReader. Peut-être qu'ils n'ont même pas mis quelque chose comme ça et que vous perdez votre temps. – Cristian

2

Je vous recommande fortement de ne pas spécifier de nom de classe explicite dans l'Intent, comme le recommande la réponse acceptée, car il s'agit d'un détail d'implémentation de l'application qui peut changer à tout moment. Au lieu de cela, créez votre intention comme d'habitude, mais utilisez Intent.setPackage() pour spécifier que le système doit uniquement rechercher le nom du package de l'application pour les activités correspondantes. C'est:

Intent intent = new Intent(Intent.ACTION_VIEW, uriToView); 
intent.setPackage("com.package.name.of.droidreader"); 
startActivity(intent) 
+0

Mais cela va également me lier à ce paquet spécifique. – Mudassir

+0

Oui, mais le nom du package ne changera pas entre les versions, mais le nom de l'activité (c'est-à-dire un détail d'implémentation) peut l'être. –

Questions connexes