Reputation: 721
How can i post an image and a text to instagram? no problem if i must open the instagram app, or if i do via api or other. the problem is that i can't find how to: they have the iphone hook only, and the api is incomprensible. someone have did that, or have the know? thanks.
Upvotes: 5
Views: 12672
Reputation: 2823
Try this it is worked for me. I will use it for share my product details. i will get details of product like name,image,description from the server and display in app and then share it to instagram.
Get image url from server.
URL url = ConvertToUrl(imgURL);
Bitmap imagebitmap = null;
try {
imagebitmap = BitmapFactory.decodeStream(url.openConnection()
.getInputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Post image and text on 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);
Convert Uri String to 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;
}
Convert Bitmap to 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);
}
Upvotes: 7
Reputation: 20319
I doubt the Instagram developers will ever release iPhone like hooks for android as Intents already serve this purpose.
If you want to share an image from your app use an intent like this:
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"));
Note that this will show a dialoge allowing the user to pick which photo sharing app to launch.
Upvotes: 5
Reputation: 326
This works for me.... but it assumes the package name of com.instagram.android, which may change without notice I suppose.
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);
}
You could always check to see if the com.instagram.android package is installed using getPackageManager() ... and if not, then don't set the package name in the intent and let the app chooser help the user pick the app to share the image with.
Upvotes: 4