4

我如何将图像和文本发布到 Instagram?如果我必须打开 instagram 应用程序,或者如果我通过 api 或其他方式打开,没问题。问题是我找不到方法:他们只有 iphone 挂钩,而且 api 是不可理解的。有人这样做过,或者知道吗?谢谢。

4

3 回答 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);
}
于 2015-09-10T08:48:54.693 回答
5

我怀疑Instagram 开发人员是否会发布类似 iPhone 的 Android 钩子,因为 Intents 已经用于此目的。

如果您想从您的应用程序共享图像,请使用如下意图:

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

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

于 2012-07-19T16:43:07.867 回答
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 包......如果没有,则不要在意图中设置包名称,让应用程序选择器帮助用户选择应用程序与共享图像。

于 2013-05-18T03:43:26.297 回答