Android Intents captured by various Twitter clients

For my app WristTweets, I implemented a feature where the user could press a button on the LiveView microdisplay to open a URL if one appears in the tweet. If there is no URL shared in the tweet, ideally I wanted to instead open their preferred Twitter client on their phone showing the tweet so that they could take further action (eg retweet, reply, block).

Several clients (‘official’ Twitter app and Plume) successfully capture ACTION_VIEW intents for any URL and will display the tweet as desired. Other clients capture various other intents but don’t appear capable of opening a specific tweet via an intent. In some cases there are other undocumented intents that will allow a user profile to be opened via an intent – this is what WristTweets falls back on for clients that can’t directly open a tweet via an intent.

Since others may find this useful, shared below are the intents I discovered for Tweetdeck, Plume, Seesmic, Hootsuite, Twidroid Pro / Ubersocial, and the ‘official’ Twitter app. As far as I know none of these are officially documented, and they obviously may change without notice in future updates.

Twitter client intent filters (how I found them)

To figure out which intents various Twitter clients could accept, I used Package Explorer and the Android Intent Playground.

I hadn’t found the these iSEC Partners tools at the time, but the Manifest Explorer and Package Play apps look like they would also do the job.

When starting an activity with the Intent.ACTION_VIEW intent and a{username}/status/{nnnnn} style URL for a tweet as data:

  • official Twitter app
  • Plume
    appears in app selection popup and opens these tweets as expected.
  • Hootsuite
  • Twidroid Pro
    appears in app selection popup, but fails to open or opens with an error
  • TweetDeck
  • Seesmic
    doesn’t even appear in the app selection popup, indicating it doesn’t capture ACTION_VIEW intents containing a url.

TweetDeck has intent filters for:

  • Intent.ACTION_VIEW for urls like tweetdeck://at/username which opens a user profile.
  • Intent.ACTION_VIEW for urls like tweetdeck://tag/some_tag which opens a column with #some_tag as the hashtag.
  • Intent.ACTION_VIEW for urls like tweetdeck:// which just opens tweetdeck.
  • Intent.ACTION_SEND for text/plain and image/* mime types

Twidroid Pro has intent filters for:

  • Intent.ACTION_VIEW for urls like twidroid://message/bla
  • Intent.ACTION_VIEW for urls like twitter://send/bla
  • Intent.ACTION_VIEW for urls like twitter://com.twidroidpro.twidroidprofile/username
  • Intent.ACTION_VIEW for urls like http://com.twidroid.list/list
  • Intent.ACTION_VIEW for urls like twitter://com.twidroidpro.twittersearch/query
  • Intent.ACTION_VIEW to catch various URLs for third-party Twitter services (eg Twitlonger, Twitpic etc)
  • Intent.ACTION_SEND for text/plain, text/twitter, application/twitter, image/png, image/jpeg and video/* mime types

Hootsuite uses the custom URI scheme x-hoot-full:// and has intent filters for:

  • Intent.ACTION_VIEW for urls like x-hoot-full://profile-twitter/username
  • Intent.ACTION_VIEW for urls like x-hoot-full://search/query
  • Intent.ACTION_VIEW for urls like x-hoot-full://list/list_name
  • Intent.ACTION_VIEW for urls like x-hoot-full://web/
  • Intent.ACTION_VIEW for urls like x-hoot-full://profile-facebook/some_id
  • Intent.ACTION_VIEW for urls like twitter://not_sure_what_this_part_is
  • Intent.ACTION_SEND for text/plain, application/twitter and image/* mime types
  • Intent.ACTION_VIEW to catch urls

The Official Twitter app has very few useful intent filters. They are:

  • Intent.ACTION_VIEW for urls like and . Curiously, I can’t find these in the AndroidManifest.xml data output by PackageExplorer, but they work in testing.
  • According to PackageExplorer, the app has Intent.ACTION_VIEW intent filters for urls containing and .. in my testing that app doesn’t seem to intercept these intents.
  • Intent.ACTION_VIEW for urls at host with mimetype .. untested .. might be useful for accessing a Twitter profile associated with the phones contacts.
  • Intent.ACTION_VIEW for the scheme twitter-android-app:// which appears to for OAuth based login for that app only. Not useful for much.
  • Intent.ACTION_SEND for text/plain and image/* mime types

Enjoy !

3 Responses to “Android Intents captured by various Twitter clients”

  1. Perfect timing with this entry for me, but still disappointing the lack of options.

    I would have thought that at least the official app could support twitter web intents ( which would be very useful for integration. Unfortunately it only sortof supports these intents by (I think) trying to open a list with the name of “intent” — so breaks them instead of implementing them.

  2. Indeed, it would great if Twitter updated their Android app to respond properly to their own ‘web intents’. The web intent URL scheme actually strikes me as a poorly designed API, given that Twitter URLs have traditionally taken the form “{username}/{listname}” (which is presumably what the Android client is expecting). It would have made more sense for web intents to use a special domain like “” so that the expected pattern wasn’t broken. And I guess someone with the username “intent” had to give up their name to the Twitter gods …


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>