Instagram from Android open on certain user and add caption to uploaded image

断了今生、忘了曾经 提交于 2019-11-29 16:03:40

问题


Instagram for Android is very limited, from what I have seen so far. My scenario is simple: allow the user to edit a picture and when he clicks on Send:

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

Then with queryIntentActivities() I search to see if Instagram is installed. If it is I send the path of my image to be uploaded:

 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");

The result: the image is uploaded using Instagram app (of course if I am logged in), but I can't add a Caption to it. None of the putExtra has any effect. So, is there any way to add a caption as intent parameter ?

And the other question, is it possible to open Instagram app with a certain user name filled in ?


回答1:


It looks as if Instagram's Android App ignores EXTRA_TEXT, EXTRA_SUBJECT and EXTRA_TITLE, so it seems that adding a caption while uploading an image is not possible. By the way, you can try different approaches to check if it ignores those extras in every case:

OPTION #1: Changing the MIME type.

You are setting the MIME type to "image/jpeg". Try using "image/" or "/*" to check if their app doesn't ignore those extras.

share.setType("image/*");

or

share.setType("*/*");

OPTION #2:

As you are sending multiple MIME types (image and text), maybe their app is expecting ACTION_SEND_MULTIPLE instead of ACTION_SEND.

Intent share = new Intent(Intent.ACTION_SEND_MULTIPLE);

OPTION #3: Use MediaStore.Images.Media.insertImage(ContentResolver cr, String imagePath, String name, String description) function:

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 #4: Post your issue in their developer forum, although there are similar questions that remain unsolved:

  • https://groups.google.com/forum/?fromgroups#!searchin/instagram-api-developers/caption$20action_send/instagram-api-developers/PJDuG2sTDlM/6bno5dZmoTEJ

  • https://groups.google.com/forum/?fromgroups#!searchin/instagram-api-developers/caption/instagram-api-developers/7XUKm9HSAdg/rJbdSnOmXacJ

And don't forget to come back and tell us their answer!




回答2:


It looks like Instagram has updated their app to accept EXTRA_TEXT to add a caption. If the user has an updated version of Instagram (July 1, 2014 version or later) you can post an image and add a caption with the following code:

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);

Users with older versions will still get the image, but not have the caption be pre populated.

This code is assuming you have already been through the auth flow.



来源:https://stackoverflow.com/questions/15002468/instagram-from-android-open-on-certain-user-and-add-caption-to-uploaded-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!