Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Open Instagram app from another android app and send an Image with a Caption

What I basically looking for is to open Instagram app from another app and send an Image with a caption. There is some useful documentation to do this in iOS. (iPhone-hooks)

Do Instagram support to perform custom actions in Android like in iOS as described in iPhone-hooks?

Below is the current code used in my application to perform this task partially.

private void sendImageToIntagram(Activity activity) {
    Intent intent = activity.getPackageManager().getLaunchIntentForPackage("com.instagram.android");
    if (intent != null) {
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.setPackage("com.instagram.android");
        String imagePath = ImageUtil.getProcessedImage().getAbsolutePath();
        try {
            shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(MediaStore.Images.Media.insertImage(activity.getContentResolver(), imagePath, "Title", "Description")));
            // shareIntent.putExtra(Intent.EXTRA_TITLE,  "Caption 01");
            // shareIntent.putExtra(Intent.EXTRA_TEXT,   "Caption 02");
            // shareIntent.putExtra(Intent.EXTRA_SUBJECT,"Caption 03");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        shareIntent.setType("image/jpeg");
        activity.startActivity(shareIntent);
    } else {
        // bring user to the market to download the app.

        intent = new Intent(Intent.ACTION_VIEW);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setData(Uri.parse("market://details?id=" + "com.instagram.android"));
        activity.startActivity(intent);
    }
}

None of the above Title, description, Caption 01, Caption 02, Caption 03 worked.

Then I tried with,

shareIntent.setAction(Intent.ACTION_SEND); --> shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);

and,

shareIntent.setType("image/jpeg");
shareIntent.setType("image/*");
shareIntent.setType("*/*"); 

too, but none of the above worked also.

like image 453
Charitha Basnayake Avatar asked Oct 10 '13 08:10

Charitha Basnayake


2 Answers

Looking at this question, and in particular to this answer by Chriskot, it looks that since July 2014 Instagram lets you do this.

Long story short

Intent instagram = new Intent(android.content.Intent.ACTION_SEND);  
instagram.setType("image/*");
instagram.putExtra(Intent.EXTRA_STREAM, [URI of photo]);
instagram.putExtra(Intent.EXTRA_TEXT, [Text of caption]);
instagram.setPackage(instagramPackageName);   
startActivity(instagram);
like image 78
dwbrito Avatar answered Nov 15 '22 10:11

dwbrito


Short answer, No.

Instagram doesn't have an Android equivalent to iPhone-hooks.

They do support the ACTION_SEND but only take into account the Intent.EXTRA_STREAM on their end.

Unless something changed in the past 4 months (I doubt it) that this guy took a stub on their code, from their AndroidManifest.xml you can assume, by looking in their intent catcher Activity that they only care for android.intent.extra.STREAM.

So for now, you can't send any other data than the actual image.

like image 39
linakis Avatar answered Nov 15 '22 10:11

linakis