【发布时间】:2012-07-19 14:49:18
【问题描述】:
如何在 Instagram 上发布图片和文字? 如果我必须打开 instagram 应用程序,或者我通过 api 或其他方式打开,没问题。 问题是我找不到如何:他们只有 iphone 挂钩,而且 api 是不可理解的。 有人这样做过,或者知道吗? 谢谢。
【问题讨论】:
如何在 Instagram 上发布图片和文字? 如果我必须打开 instagram 应用程序,或者我通过 api 或其他方式打开,没问题。 问题是我找不到如何:他们只有 iphone 挂钩,而且 api 是不可理解的。 有人这样做过,或者知道吗? 谢谢。
【问题讨论】:
试试这个它对我有用。我将使用它来分享我的产品详细信息。我将从服务器获取产品的详细信息,如名称、图像、描述并显示在应用程序中,然后分享到 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);
}
【讨论】:
我怀疑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"));
请注意,这将显示一个对话框,允许用户选择要启动的照片共享应用程序。
【讨论】:
这对我有用....但它假定包名称为 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 包 ...如果没有,则不要在意图中设置包名称,让应用选择器帮助用户选择共享图像的应用。
【讨论】: