Search code examples
androidandroid-intentinstagram

How to add an option to share to Instagram Stories?


Background
In my Android App, users can share generated images to other apps. It's working nicely using the ACTION_SEND Intent.
Many users have asked why they can't share to Instagram stories directly.

Initially I thought Instagram doesn't support receiving Intents for stories (correct to some extent). I searched for it today, and according to this documentation, to share to Instagram Stories, a separate intent com.instagram.share.ADD_TO_STORY has to be used. I tried it, and it works fine.

The problem:
How do I keep both the options available?

I thought about it a lot, and came up with the following options:

1) Have two separate buttons. It will work, but it will look/feel bad.

2) Have my app accept ACTION_SEND intent, name it as Share to Instagram Story, and redirect the intent to the com.instagram.share.ADD_TO_STORY intent. In principle, make a proxy intent.
It will work, and look/feel great, but I don't know if its allowed (legal, etc) and can I disable the intent if the user doesn't have Instagram installed.

3) Add the 'com.instagram.share.ADD_TO_STORY' to the app chooser launched by ACTION_SEND. This would be ideal, but I don't know how to do it.


Solution

  • If you want to add multiple actions to Intent and create a chooser look at this example:

    Intent viewIntent = new Intent(Intent.ACTION_VIEW);
    Intent editIntent = new Intent(Intent.ACTION_EDIT);
    viewIntent.setDataAndType(uri, type);
    editIntent.setDataAndType(uri, type);
    Intent chooserIntent = Intent.createChooser(editIntent, "Open in...");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { viewIntent });
    startActivity(chooserIntent);
    

    UPDATE: Here is good solution to your answer. How to make an intent with multiple actions