27 votes

Instagram depuis Android ouvert sur un certain utilisateur et ajouter une légende à l'image téléchargée

Instagram pour Android est très limité, d'après ce que j'ai vu jusqu'à présent. Mon scénario est simple : permettre à l'utilisateur de modifier une photo et lorsqu'il clique sur Envoyer :

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");

Ensuite, avec queryIntentActivities() Je cherche à savoir si Instagram est installé. Si c'est le cas, j'envoie le chemin de mon image à télécharger :

 share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///" + path to myfile.png"));
 share.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
 share.putExtra(Intent.EXTRA_SUBJECT, "Sample subject");
 share.putExtra(Intent.EXTRA_TEXT, "Sample text");
 share.putExtra(Intent.EXTRA_TITLE, "Sample title");

Le résultat : l'image est téléchargée à l'aide de l'application Instagram (bien sûr si je suis connecté), mais je ne peux pas y ajouter de légende. Aucune des putExtra n'a aucun effet. Existe-t-il un moyen d'ajouter une légende comme paramètre d'intention ?

Et l'autre question, est-il possible d'ouvrir l'application Instagram avec un certain nom d'utilisateur rempli ?

8voto

Alejandro Colorado Points 3062

Il semble que l'application Android d'Instagram ignore EXTRA_TEXT, EXTRA_SUBJECT et EXTRA_TITLE. Il semble donc que l'ajout d'une légende lors du téléchargement d'une image ne soit pas possible. D'ailleurs, vous pouvez essayer différentes approches pour vérifier si elle ignore ces extras dans tous les cas :

OPTION #1 : changer le type MIME.

Vous réglez le type MIME sur "image/jpeg". Essayez d'utiliser "image/ " ou " /*" pour vérifier si leur application n'ignore pas ces extras.

share.setType("image/*");

ou

share.setType("*/*");

OPTION #2 :

Comme vous envoyez plusieurs types MIME (image et texte), il se peut que leur application attende ACTION_SEND_MULTIPLE au lieu de ACTION_SEND.

Intent share = new Intent(Intent.ACTION_SEND_MULTIPLE);

OPTION n° 3 : utiliser MediaStore.Images.Media.insertImage(ContentResolver cr, String imagePath, String name, String description) fonction :

Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), "file:///" + path to myfile.png", "Sample title", "Sample description")));
share.setType("image/jpeg");
share.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);

OPTION n° 4 : Publier votre problème dans leur site Web. forum des développeurs bien que d'autres questions similaires restent sans réponse :

Et n'oubliez pas de revenir et de nous dire leur réponse !

4voto

Chriskot Points 339

Il semble qu'Instagram ait mis à jour son application pour accepter l'EXTRA_TEXT pour ajouter une légende. Si l'utilisateur dispose d'une version mise à jour d'Instagram (version du 1er juillet 2014 ou ultérieure), vous pouvez publier une image et ajouter une légende avec le code suivant :

Intent instagram = new Intent(android.content.Intent.ACTION_SEND);
instagram.setType("image/*");
instagram.putExtra(Intent.EXTRA_STREAM, [URI of photo]);
instagram.putExtra(Intent.EXTRA_TEXT, [Text of caption]);
instagram.setPackage(instagramPackageName);
startActivity(instagram);

Les utilisateurs d'anciennes versions recevront toujours l'image, mais la légende ne sera pas préremplie.

Ce code suppose que vous êtes déjà passé par le flux d'authentification.

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