Cette question est un peu plus âgés, mais depuis que j'ai juste rencontré un problème similaire, il peut également être d'intérêt pour les autres. Tout d'abord, comme mentionné par Pierre, créez votre intention:
Intent tweetIntent = new Intent(Intent.ACTION_SEND);
tweetIntent.putExtra(Intent.EXTRA_TEXT, "Test; please ignore");
tweetIntent.setType("application/twitter");
"application/twitter" est en fait connu un type de contenu, voir ici. Maintenant, lorsque vous essayez de démarrer une activité avec cette intention, il indiquera toutes sortes d'applications qui ne sont pas vraiment les clients Twitter, mais que vous voulez un morceau de l'action. Comme déjà mentionné dans un couple de la "pourquoi tu veux faire ça?", sorte de réponses, certains utilisateurs peuvent trouver utile. D'autre part, si j'ai un bouton dans mon application qui dit "Tweet!" l'utilisateur pourrait très bien s'attendre à ce amener un client Twitter.
Ce qui signifie qu'au lieu de simplement le lancement d'une activité, nous avons besoin de filtrer ceux qui sont appropriées:
PackageManager pm = getPackageManager();
List<ResolveInfo> lract
= pm.queryIntentActivities(tweetIntent,
PackageManager.MATCH_DEFAULT_ONLY);
boolean resolved = false;
for(ResolveInfo ri: lract)
{
if(ri.activityInfo.name.endsWith(".SendTweet"))
{
tweetIntent.setClassName(ri.activityInfo.packageName,
ri.activityInfo.name);
resolved = true;
break;
}
}
Vous aurez besoin d'expérimenter un peu avec les différents fournisseurs, mais si le nom se termine en ".SendTweet" vous êtes assez sûr (c'est le nom de l'activité dans Twidroyd). Vous pouvez également vérifier votre débogueur pour les noms de package que vous souhaitez utiliser et ajuster la comparaison de chaînes de caractères en conséquence (c'est à dire Twidroyd utilise com.twidroid.*").
Dans cet exemple simple nous faisons le choix de la première activité d'appariement que nous trouvons. Cela amène le client Twitter directement, sans avoir à faire aucun choix. Si il n'ya pas de bonne les clients Twitter, nous retournons à la norme sélecteur d'activité:
startActivity(resolved ? tweetIntent :
Intent.createChooser(tweetIntent, "Choose one"));
Vous pourriez développer du code et de prendre en compte le cas où il y a plus d'un client Twitter, lorsque vous souhaiterez peut-être créer votre propre dialogue sélecteur de toutes les activité de les noms vous trouvez.