27

就我目前所见,适用于 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 应用?

4

2 回答 2

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:在他们的开发者论坛中发布您的问题,尽管还有类似的问题仍未解决:

别忘了回来告诉我们他们的答案!

于 2013-05-25T18:32:09.987 回答
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);

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

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

于 2014-07-09T20:23:46.783 回答