Android:如何在Instagram上发布图片和文字

4
我怎样才能在Instagram上发布图片和文字? 如果必须打开Instagram应用程序或者通过API或其他方式进行操作都没有问题。 问题在于我找不到如何操作:他们只有iPhone钩子,而且API也难以理解。 是否有人已经成功做到了这一点或者知道该怎么做呢? 谢谢。
3个回答

7

我尝试过这个方法,它对我有用。我将使用它来分享我的产品详情。我将从服务器获取产品名称、图片和描述等详细信息,在应用程序中显示后分享到 Instagram。

从服务器获取图片的 URL。

URL url = ConvertToUrl(imgURL);
    Bitmap imagebitmap = null;
    try {
        imagebitmap = BitmapFactory.decodeStream(url.openConnection()
                .getInputStream());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

在Instagram上发布图片和文字。

// post on instagram
            Intent shareIntent = new Intent(
                    android.content.Intent.ACTION_SEND);
            shareIntent.setType("image/*");
            shareIntent.putExtra(Intent.EXTRA_STREAM,
                    getImageUri(HomeActivity.this, result));
            shareIntent.putExtra(Intent.EXTRA_SUBJECT, sharename);
            shareIntent.putExtra(
                    Intent.EXTRA_TEXT,
                    "Check this out, what do you think?"
                            + System.getProperty("line.separator")
                            + sharedescription);
            shareIntent.setPackage("com.instagram.android");
            startActivity(shareIntent);

将Uri字符串转换为URL
 private URL ConvertToUrl(String urlStr) {
    try {
        URL url = new URL(urlStr);
        URI uri = new URI(url.getProtocol(), url.getUserInfo(),
                url.getHost(), url.getPort(), url.getPath(),
                url.getQuery(), url.getRef());
        url = uri.toURL();
        return url;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

将位图转换为 Uri

public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(
        inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}

1
这段代码适用于图片,但我无法发送带有文字的图片。 - AmeeJoshi
这段代码只能正常处理图像,但无法发送文本。 - Vivek Pratap Singh

5
我怀疑Instagram开发者会为安卓发布类似于iPhone的钩子,因为Intents已经可以实现这个目的。
如果你想从你的应用程序分享一张图片,请使用这样的Intent:
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("image/jpeg");
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/Path/To/Image.jpg"));
startActivity(Intent.createChooser(i, "Share Image"));

请注意,这将显示一个对话框,允许用户选择要启动的照片共享应用程序。

这是建议的方法,你应该遵循它。否则,你将需要使用Instagram API来推出自己的定制分享内容。 - Kumar Bibek
有没有办法从移动浏览器触发这个功能? - Anony372
如果用户已经安装了Instagram,那么当用户点击分享按钮时,Instagram将会出现在列表中。如果您想通过移动网站分享,则必须使用Instagram API。 - slayton
3
使用上述方法,我无法将图片上传到Instagram...请帮忙。 - Richa

4

这对我来说是有效的...但它假设了包名为com.instagram.android,这个可能会在没有通知的情况下发生改变。

private void shareToInstagram(Uri imageUri){
    Intent i = new Intent(Intent.ACTION_SEND);
    i.setType("image/*");
    i.putExtra(Intent.EXTRA_STREAM, imageUri);
    i.setPackage("com.instagram.android");
    activity.startActivity(i);
}

您可以使用getPackageManager()检查是否安装了com.instagram.android包,如果没有,则不要在意图中设置包名称,让应用程序选择器帮助用户选择与之共享图像的应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接