来自Android的Instagram在特定用户上打开,并为上传的图像添加标题

时间:2013-02-21 12:38:16

标签: android instagram

从我到目前为止看来,Android的Instagram非常有限。我的场景很简单:允许用户编辑图片,当他点击发送:

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

然后使用queryIntentActivities()我搜索是否安装了Instagram。如果是,我发送要上传的图像的路径:

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

结果:使用Instagram应用程序上传图片(当然,如果我已登录),但我无法为其添加标题。 putExtra没有任何效果。那么,有没有办法将标题添加为意图参数?

另一个问题是,是否可以打开填写了某个用户名的Instagram应用程序?

2 个答案:

答案 0 :(得分:8)

看起来Instagram的Android应用程序忽略了EXTRA_TEXT,EXTRA_SUBJECT和EXTRA_TITLE,因此似乎无法在上传图像时添加标题。顺便说一句,您可以尝试不同的方法来检查它是否在每种情况下都忽略了这些额外的东西:

选项#1:更改MIME类型。

您将MIME类型设置为“image / jpeg”。尝试使用“image / ”或“ / *”来检查他们的应用是否不会忽略这些额外内容。

share.setType("image/*");

share.setType("*/*");

选项#2:

当您发送多种MIME类型(图片和文字)时,他们的应用可能需要ACTION_SEND_MULTIPLE而不是ACTION_SEND。

Intent share = new Intent(Intent.ACTION_SEND_MULTIPLE);

选项#3:使用MediaStore.Images.Media.insertImage(ContentResolver cr, String imagePath, String name, String description)功能:

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

选项#4:将问题发布在他们的developer forum中,尽管有类似的问题尚未解决:

不要忘记回来告诉我们他们的答案!

答案 1 :(得分:4)

看起来Instagram已更新其应用以接受EXTRA_TEXT添加标题。如果用户拥有Instagram的更新版本(2014年7月1日或更高版本),您可以发布图像并使用以下代码添加标题:

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

旧版本的用户仍会获得图片,但不会预先填充标题。

此代码假设您已经完成了身份验证流程。