3 votes

ajouter ou supprimer des options de createChooser

String message = "Text I want to share";
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT, message);
startActivity(Intent.createChooser(share,"Share on"));

pour l'instant, il affiche les options par défaut comme : Bluetooth, Email, Facebook, Gmail, LinkedIn, Messaging, Share Via Barcode.

ou s'agit-il des applications installées ?

Ce que je veux savoir, c'est comment je peux supprimer certaines personnes de cette liste. Share Via Barcode .

et ajouter quelque chose d'autre ?

Merci de votre attention

8voto

nandeesh Points 16095

Utilisez le code ci-dessous pour ajouter un nouvel élément à l'écran de sélection.

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");       
share.putExtra(Intent.EXTRA_TEXT, message);

Intent addIntent = ;//whatever you want

Intent chooser = new Intent(Intent.ACTION_CHOOSER);
chooser.putExtra(Intent.EXTRA_INTENT, share );      
chooser.putExtra(Intent.EXTRA_TITLE, "title");

Intent[] intentArray =  {addIntent }; 
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivity(chooser);

Mais il n'est pas possible de supprimer des éléments spécifiques. Vous pouvez donc résoudre l'intention en utilisant Packagemanager.resolveActivity et créez votre propre vue de liste personnalisée

3voto

JBernhardt Points 394

J'ai utilisé le code suivant pour obtenir une liste de toutes les applications eMail et SMS installées sur l'appareil :

Intent shareSMS = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", "12346556", null));
shareSMS.addCategory(Intent.CATEGORY_DEFAULT);
shareSMS.putExtra("sms_body", message);

Intent shareEmail = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null));
PackageManager pm = getPackageManager();
List<ResolveInfo> mailActivityList = pm.queryIntentActivities(shareEmail, PackageManager.MATCH_DEFAULT_ONLY);

List<Intent> mailIntents = new ArrayList<Intent>();
for (ResolveInfo resInfo : mailActivityList) {
    Intent targetedOpenIntent = new Intent(android.content.Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null))
            .setPackage(resInfo.activityInfo.packageName)
            .putExtra(Intent.EXTRA_EMAIL, emails)
            .putExtra(Intent.EXTRA_SUBJECT, subject)
            .putExtra(Intent.EXTRA_TEXT, message);
    mailIntents.add(targetedOpenIntent);
}

Intent chooser = new Intent(Intent.ACTION_CHOOSER);
chooser.putExtra(Intent.EXTRA_INTENT, shareSMS);
chooser.putExtra(Intent.EXTRA_TITLE, "Send request");
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, mailIntents.toArray(new Parcelable[] { }));

startActivity(chooser);

0voto

beginner Points 453

Ajouter une option au sélecteur

            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("text/plain");       
            share.putExtra(Intent.EXTRA_TEXT, message);

            Intent extraOptionToAdd = new Intent(this, ExtraOptionActivity.class);
            extraOptionToAdd.putExtra(Intent.EXTRA_TEXT, "Text");
            LabeledIntent labeledExtraOption = new LabeledIntent(extraOptionToAdd, getPackageName(), "Extra Option!", 0);

            Intent chooser = Intent.createChooser(share, "Share Now!");
            Intent[] intentArray =  {labeledExtraOption};
            chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
            startActivity(chooser);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X