Skip to content

5 février 2011 | Rédigé par Axon

22

Partager un texte sur Twitter, Facebook, etc. [Tutoriel Android n°23]

Nous allons voir dans ce tutorial, comment faire pour partager un texte, que l’on aura saisi dans un EditText, sur Twitter, Facebook ou toutes autres applications qui permettent le partage de message (c’est à dire par mail, sms, et toutes les applications du style Friend Stream, Peep, etc…)

Nous allons utiliser une interface graphique très simple, qui se compose d’un EditText et d’un bouton pour déclencher le partage. Voici donc le contenu du main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<EditText  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/edittext"
    />
 
<Button
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
	android:id="@+id/share"
    android:text="Partager"
    />
</LinearLayout>

On déclare notre EditText et notre Button (pour une meilleur lisibilité dans le code) :

private EditText text;
private Button share;

On les relie avec l’interface graphique

text = (EditText)findViewById(R.id.edittext);
share = (Button)findViewById(R.id.share);

On créer un OnClickListener pour lancer l’action de partage lorsque le Button est appuyer.

share.setOnClickListener(
        new OnClickListener() {
		@Override
		public void onClick(View v) {
			final Intent MessIntent = new Intent(Intent.ACTION_SEND);
	        	MessIntent.setType("text/plain");
	        	MessIntent.putExtra(Intent.EXTRA_TEXT, text.getText().toString());
	        	VotreActivity.this.startActivity(Intent.createChooser(MessIntent, "Partager avec..."));
		}
        }
);

Examinons ce code:

>>> Création de l’Intent, MessIntent est le nom donner, à vous de choisir le votre =D

final Intent MessIntent = new Intent(Intent.ACTION_SEND);

>>> Définition du type d’Intent. J’en ai essayer d’autre mais lui seul permet d’utiliser toutes les applications disponibles.

MessIntent.setType("text/plain");

>>> Définition du texte (on récupère le texte de l’EditText) à publier sur Twitter, Facebook ou autres.

MessIntent.putExtra(Intent.EXTRA_TEXT, text.getText().toString());

>>> Lancement de l’Intent créer précédemment. MessIntent est l’Intent créer, et « Partager avec…. » correspond au titre de la boite de dialogue qui s’ouvrira pour vous proposer l’application à utiliser pour partager votre texte.
VotreActivity.this est le nom de votre activité en cours, qui est donc à remplacer par la votre).

VotreActivity.this.startActivity(Intent.createChooser(MessIntent, "Partager avec..."));

Vous savez désormais comment envoyer un message sur les réseaux sociaux ou autres. Je vous met deux petites screens pour que vous voyez ce que vous devriez obtenir :

Je partage en « bonus » une modification simple du code qui vous permettra d’ouvrir Gmail avec une adresse et un sujet pré-rempli.

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("plain/text");
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "SujetDuMessage");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"VotreEmail@gmail.com"});
VotreActivity.this.startActivity(Intent.createChooser(emailIntent, "Email Envoyer..."));

Je pense qu’il n’est pas nécessaire d’expliquer ce code qui ressemble beaucoup au précédent néanmoins si vous avez des questions, n’hésitez pas. En tout cas pré-remplir un mail peut être utile pour avoir des retour sur vos application par les utilisateurs.

Cette article a été rédigé par TecKnologikS (merci à lui ;) ). Pour le remercier, vous pouvez télécharger ses applications et surtout faire vos retours pour qu’il puisse les améliorer : Verbes Irréguliers Anglais, Des Coquins, Hasard.

Si vous avez besoin d’un retour sur vos applications n’hésitez pas à lui envoyer un mail pour lui demander : tecknologiksdev [at] gmail [point] com (remplacer [at] par @ et [point] par .) ;)

Découvrez d'autre articles de la catégorie Tutoriels Android

Encore un peu de lecture :

22 Commentaires Poster un commentaire
  1. Valentin
    6 fév 2011

    Tuto super intéressant (comme d’habitude). Merci TecKnologikS

  2. jeremie
    6 fév 2011

    super merci marche impec!!!

  3. Valentin
    7 fév 2011

    Est-il possible de sélection la/les applications(s) à afficher dans la liste?
    Pour par exemple ne proposer que les appli d’email ou uniquement l’envoi par SMS.

    Merci d’avance

  4. 7 fév 2011

    @Valentin : Bonne question ! Je te tiens au courant si je trouve quelque chose ! ;)

  5. 13 fév 2011

    MERCI pour le tuto !! :) ;)

  6. Valentin
    13 fév 2011

    J’ai finalement trouvé la réponse ici : http://appinventor.googlelabs.com/learn/reference/other/activitystarter.html
    Il est donc possible de sélectionner l’application à lancer (mail, sms, map, …).

    Merci quand même :-)

  7. laby
    28 fév 2011

    Tout d’abord MERCI pour ce tuto!
    J’ai un problème avec facebook, la publication ne se fait pas. Sous « Partager » il est écrit : ‘Votre lien n’a pas pu être trouvé.’
    Pour le reste cela marche, une idée?
    Merci

  8. laby
    3 mar 2011

    Bon en fait l’appli officielle facebook ne permet de partager que des liens, il faut donc passer par le sdk facebook pour partager un texte.

  9. anja
    30 mar 2011

    @Axon est ce que tu peux m’expliquer avec quoi je dois remplacer le « VotreActivity.this. »
    cdt

  10. anja
    30 mar 2011

    J’ai trouvé merci pour le tuto

  11. boubou
    26 avr 2011

    est ce que vous pouvez m’aider à trouver une application Android qui me permettre d’accéder à un site web pour extraire des informations de ce derniers et les afficher dans mon activity?

  12. cyberalternative
    28 sept 2011

    Ce n’est valable que si on a les dites applications d’installées sur le téléphone non ?

    Ne fonctionne pas chez moi, il faut changer
    final Intent MessIntent = new Intent(Intent.ACTION_SEND);

    par
    final Intent MessIntent = new Intent(Intent.ACTION_CHOOSER);

    NB : Android 2.2 Google API

  13. G-Man
    17 jan 2012

    Bonjour et merci du tuto!!

    J’aurai une petite question par contre et je vais tenter d’être suffisamment claire : alors je voudrais à partir d’une app android écrire un texte en « script php » …

  14. pestouille
    16 fév 2012

    Alors avec Facebook quand il s’ouvre çà ne m’écrit pas ce que j’ai mis dans le edit text pourquoi?

    sinon pour gmail,sms et autre pas de soucis

  15. pestouille
    16 fév 2012

    Valentin, comment as tu fait pour lancer uniquement les applications que tu voulais? je n arrive pas à lire ton lien internet….
    J’aimerais juste partager par sms et gmail par exemple

  16. Mr.xyz
    14 mar 2012

    Connais tu un moyen pour récupérer le choix de l’utilisateur, je veux dire si il a cliqué sur twitter ou facebook, récupérer le non de l’appli ? Thx d’avance

  17. koukou
    13 avr 2012

    slm,Svp ce tuto ne fait pas des erreurs mais il ne partage pas ce text

  18. ramzi
    23 avr 2012

    bnj tt le monde :) j’ai fait une application android qui te permet de lire des articles, comment faire pour partager sur facebook ,twitter ou email l’article qui je vois intéressant parmi les articles qui j’ai lu sur mon smartphone . svp m’aidez car je vais rendre mon projet cette semaine et j’ai pas le temps

  19. Sahraoui
    6 mai 2012

    je suis débutant en android et je besoin d’une tuto de partage d’un image sur facebook. Merci d’avance

  20. parser
    17 mai 2012

    Comment fait-on quand twitter est pas installé sur l’appareil ?

  21. Dodo
    23 avr 2013

    Super tuto ! Mais seul hic c’est que ça ne fonctionne pas pour facebook, une idée ?? (à part utiliser le sdk de facebook)

Trackbacks & Pingbacks

  1. Les tweets qui mentionnent Partager un texte sur Twitter, Facebook, etc. [Tutoriel Android n°23] | Tuto Mobile -- Topsy.com

Une question, une suggestion, une opinion? Partagez ce que vous pensez, laissez un commentaire.

(obligatoire)
(obligatoire)

Note: Votre adresse email ne sera jamais publiée.

Suivez les réponses aux commentaires