【问题标题】:Android: post image and text to InstagramAndroid:将图像和文本发布到 Instagram
【发布时间】:2012-07-19 14:49:18
【问题描述】:

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

【问题讨论】:

    标签: android photo instagram


    【解决方案1】:

    试试这个它对我有用。我将使用它来分享我的产品详细信息。我将从服务器获取产品的详细信息,如名称、图像、描述并显示在应用程序中,然后分享到 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);
    }
    

    【讨论】:

    • 此代码适用于图像,我无法发送带有图像的文本。
    • 此代码仅适用于图像...无法发送文本
    【解决方案2】:

    我怀疑Instagram developers 是否会像 Android 的钩子一样发布 iPhone,因为 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"));
    

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

    【讨论】:

    • 这是您应该遵循的推荐方法。否则,您将需要使用 Instagram API 来推出您自己的自定义分享内容。
    • 有没有办法从移动浏览器触发这个?
    • 如果用户安装了 Instagram,那么当用户单击共享按钮时,Instagram 将显示在该列表中。如果您想通过移动网站分享,则必须使用 Instagram API
    • 使用上述方法我无法将图像上传到 instagram...请帮助
    【解决方案3】:

    这对我有用....但它假定包名称为 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 包 ...如果没有,则不要在意图中设置包名称,让应用选择器帮助用户选择共享图像的应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-25
      • 2018-04-23
      相关资源
      最近更新 更多