Android – ACTION_SEND – Une solution pour pouvoir partager du texte avec l’application Facebook

facebook-androidL’un des problème que j’avais avec Scores Keeper  c’est qu’il était impossible de partager les résultats de ses tournois avec Facebook. En effet, l’application Android de ce réseau social gère très mal cet Intent et ne permet pas de partager un simple texte 👿 Après avoir voulu utiliser leur SDK Android j’ai laissé tombé l’idée. Trop complexe pour mon simple besoin de partager des résultats de tournois 😦

Etant donné que ce réseau est (malheureusement) utilisé par énormément de monde j’ai pas mal cherché une solution de partager facilement les résultats d’un tournoi. Il s’avère que l’application Facebook gère correctement le partage de photos via ACTION_SEND. J’ai alors décidé de créer une image des informations que je souhaitais partager.

L’idée est d’utiliser un layout XML et d’en faire une image. Voici un exemple de rendu que l’on peut avoir avec la version 2.1 de Scores Keeper. Ainsi Facebook recevra ce genre d’image :

1391893680604

Voici le code de la solution proposée :

	/**
	 * Launch ACTION_SEND intent for a specific tournament
	 *
	 * @param activity
	 * @param tournamentId
	 */
	public void shareTournament(Activity activity, long tournamentIg) {
		String subject = getTournamentIntentSubject(tournamentId);
		String textToShare = getTournamentTextToShare(tournamentId);

		Intent share = new Intent(Intent.ACTION_SEND);
		share.setType("image/*");
		share.putExtra(Intent.EXTRA_SUBJECT, subject);

		// Image to share
		try {
			View view = activity.getLayoutInflater().inflate(R.layout.share, null);
			((TextView) view.findViewById(R.id.title)).setText(subject);
			((TextView) view.findViewById(R.id.text)).setText(textToShare);

			Bitmap image = loadBitmapFromView(view);

			String path = Images.Media.insertImage(activity.getContentResolver(), image, "title", null);
			Uri imageUri = Uri.parse(path);
			share.putExtra(Intent.EXTRA_STREAM, imageUri);
		} catch (Exception e) {
			Log.w("Tournament", "error while generating image to share");
		}

		share.putExtra(Intent.EXTRA_TEXT, textToShare);
		activity.startActivity(Intent.createChooser(share, activity.getString(R.string.share) + " " + subject));

	}

	public Bitmap loadBitmapFromView(View v) {

		v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
		Canvas c = new Canvas(b);
		v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
		v.draw(c);
		return b;

	}

Cette solution n’est peut être pas la plus élégante mais elle permet sans trop d’effort de pouvoir partager ses résultats sur tous les réseaux et notamment Facebook.

N’hésitez pas à commenter cette solution, à me dire ce que vous en pensez ou en proposer d’autre 🙂

Merci d’avoir pris le temps de lire mon article.

Publicités

Étiquettes : , , , , , , , , , ,

7 responses to “Android – ACTION_SEND – Une solution pour pouvoir partager du texte avec l’application Facebook”

  1. Fred says :

    Bonjour,

    Le soucis c’est que maintenant, l’export n’est plus possible en .xls …
    Et c’est bien dommage.
    Car je m’en servais pour tracer l’historique de la partie …
    exemple ici : https://dl.dropboxusercontent.com/u/35261550/20130626%20RMGF.pdf

    Un export .xls sera-t-il à nouveau possible ?!

    • Benoît says :

      Bonjour Fred,

      La possibilité de partager le tournoi avec Facebook n’est applicable que sur le bouton « Partager les résultats » (les trois ronds reliés). Pour avoir un export Excel (CSV en fait 😛 ) il faut dérouler le menu en haut à droite et sélectionner « Envoyer le tournoi ». Le fichier CSV sera en pièce jointe.

      Benoît

      • Fred says :

        Benoît,

        Ok pour cette explication (et ok pour le csv plutôt que le xls :-P) … mais ça, c’était avant la MAJ !

        En effet, depuis la MAJ, le fichier exporté n’est plus un CSV mais un jpeg.
        Il y a deux moyens pour exporter :

        1) »les trois ronds reliés ».
        2) Le menu en bas à gauche (et pas en haut à droite … en tout cas dans ma version !)

        Avec ces deux méthodes, le résultat est le même et le fichier envoyé est un jpeg avec juste le résultat final (idem que FB j’imagine)

        Résumé en image :

        Le fichier reçu par mail est le suivant :

        Voilà voilà, le problème persiste 😉

        Pour info, ma version d’android est la 4.1.2

      • Benoît says :

        Je ne reproduit pas le problème sur mon smartphone 😦 Pourrais-tu me dire quel modèle tu utilises si cela ne te dérange ? Je vais étudier ce problème plus en détail avec un émulateur configuré pareil.

      • Fred says :

        Il s’agit du samsung galaxy s2.
        Android version 4.1.2

        Bon travail 😉

      • Benoît says :

        Salut,
        Je suis désolé mais de mon côté impossible de reproduire le soucis. J’ai pu tester sur le S2 d’un ami qui a exactement la même version d’Android et il n’a pas le problème que tu me décris. As-tu fait quelquechose de spécial sur ton téléphone (ROM perso, …) ?

      • Fred says :

        Bonjour Benoit,

        Je donne une suite (positive) à ce petit bug :

        Depuis toujours, j’essaye de partager le tournoi en csv via yahoo mail.
        Je viens d’essayer il y a 5 min. Yahoo envoi un jpeg
        Il y a 4 minutes, Je tente le coup en envoyant le résultat du tournoi via une adresse gmail et … miracle, c’est un csv qui est envoyé !
        Il y a 3 minutes, je retente le coup via yahoo et là … c’est également un csv qui est envoyé ?!?!?
        Va comprendre !

        Bref, tout est bien qui fini bien 😉
        Et merci pour le suivi technique !

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :