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

Android的Instagram是非常有限的,从我迄今看到的。 我的情况很简单:允许用户编辑图片,当他点击发送:

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

然后用queryIntentActivities()我search看看是否安装了Instagram。 如果是我发送要上传的图像的path:

  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的应用程序(当然,如果我login),但我不能添加标题。 putExtra没有任何影响。 那么,有什么方法可以添加标题作为意图参数吗?

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

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

选项1:更改MIMEtypes。

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

 share.setType("image/*"); 

要么

 share.setType("*/*"); 

选项2:

在发送多个MIMEtypes(图片和文本)时,也许他们的应用程序期待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:在开发者论坛上发布你的问题,虽然还有类似的问题仍未解决:

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

它看起来像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); 

旧版本的用户仍然可以看到图片,但是没有预先填写标题。

这段代码假设你已经通过了authenticationstream程。