2009-12-07 26 views
2

J'ai une question liée au choix d'une application par programme lorsque la boîte de dialogue "Complete Action Using" s'affiche dans Android.Comment est-ce que je contourne la "action complète en utilisant ..."

Un exemple serait comme suit: Dans mon code, j'ai cette déclaration

startActivity(new Intent(Intent.ACTION_VIEW, 
     Uri.parse("http://www.youtube.com/watch?v=98yl260nMEA"))); 

Je vais ensuite montré une boîte de dialogue avec deux options: pour compléter l'action à l'aide du navigateur ou YouTube

Une idée comment puis-je choisir YouTube sans afficher la boîte de dialogue?

Merci!

Nicholas

+0

Avez-vous trouvé une solution pour cela? – keen

Répondre

0

je pense que vous aurez besoin de plus d'informations sur le filtre intention de l'application que vous voulez lancer par défaut (dans ce cas, l'application YouTube). Cette application cible peut comporter plusieurs filtres d'intention et l'un d'entre eux peut être plus spécifique. Vous pouvez appeler startActivity avec cette intention spécifique, puis l'application prévue sera lancée directement. Cependant, cela vous oblige à avoir plus de connaissances sur l'application cible (ce qui est difficile dans la plupart des cas, comme l'application Youtube).

À part ça, je ne pense pas que vous puissiez faire grand-chose depuis votre application. La résolution d'intention est effectuée par le framework Android, donc si une application utilisateur peut la remplacer d'une manière ou d'une autre, ce serait une faille en termes de sécurité.

+0

hmm ... est logique. merci, Jayesh. J'ai ce code (mais il ne me montre que les applications suggérées à utiliser - dans ce cas, le navigateur et YouTube) PackageManager pm = getPackageManager(); \t \t Liste activities = pm.queryIntentActivities (nouvelle intention (Intent.ACTION_VIEW, Uri.parse (http://www.youtube.com/watch?v=Zi_XLOBDo_Y)), 0); \t \t Iterator actList = activities.iterator(); \t \t while (actList.hasNext()) { \t \t \t ResolveInfo curr = actList.next(); \t \t \t \t \t \t Log.d ("intentions =====>", curr.toString() + "" + curr.match + "" + curr.isDefault); \t \t} –

0
PackageManager pm = getPackageManager(); 
List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(Intent.ACTION_VIEW, Uri.parse(youtube.com/watch?v=Zi_XLOBDo_Y)), 0); 
Iterator<ResolveInfo> actList = activities.iterator(); 
while(actList.hasNext()) { 
    ResolveInfo curr = actList.next(); 
    Log.d("Intents =====> ", curr.toString() + " " + curr.match + " " + curr.isDefault); 
}