How well have intents actually worked out in practice on Android? It's been awhile since I spent much time with an Android device but a year or so ago it was very rare that I really wanted a generic utility.
They're all over the place for core functions - whenever you click a "Share" button it will ask which applications can handle the content you want to share and add them to the menu. I've also been prompted to choose whether I want to make phone calls using the built in dialer or Skype, which I presume is using intents as well.
Where I've not see so much use is providing completely new intents, presumably because its so hard to get any sort of agreement on how they should be implemented.
BlackBerry has this also. I can share anything with any app that I have installed (and that can support sharing of some sort). I don't know how this is implemented or if it is even the same principal as this behind the scenes...
Whilst that might be cool technology, I wonder at the user experience and confusion when my mum clicks on the phone icon and all of a sudden this menu appears asking me whether I want to use the phone or skype (obviously I get that the call can be done with either, but mum probably doesn't).
If your mother doesn't have skype installed she wouldn't get this message. If she does, I would presume she knows what skype is for.
Additionally for the big system-level intents there is an "always use this action" which is useful so you don't have to repeatedly tell it to use the phone app to place phone calls.
The iPhone experience is that the system Contacts app is only for calling via the phone system. If you want to call via Skype, you open Skype and then use its embedding of the system address book. It is really quite clunky.
It's convient for lots of things, e.g. if you install a new twitter client suddenly when you take a photograph and want to share it, that app can now show up as a way to share that photo.
'intent' worked well for me. With intents, it took only few lines of code to scan and de-crypt a QR image (thanks to zxing). Without intent, it would have taken weeks to implement such feature.
No. The idea behind intents is that the calling app doesn't know (or care) who handles the action. You just fire off a message that says "Hey, someone handle this", and the OS takes care of the rest. You would need to prompt the user to install an app to handle the intent if they don't have one already.
IMO it works really well and is one of the things which sets Android apart from iOS and other OSes in general.
One of the finer points which I really appreciate is how intents can be fine-tuned not only to handle "a image" or "a mp3" or act like a extension/protocol-handler in your desktop OS, but how it can react on parts of a intent, like the domain of a URL.
When someone links to Applications on Android market on a web-page (i.e., a https-link to market.android.com) and I click it on my Android device, I actually get the link "opened" by having Android market app launched and focused on that specific application. Very, very neat.
The same thing can be done for wikipedia readers. A wikipedia link launches your app. In the same way other apps can provide intents for music selection, playback, data-sources, data-consumers and god knows what. Or just have an app become the default for some action on your system by handling the generic intent (i.e. surf the web).
Intents are one of the really good things which makes Android Android. And in case there were any doubts: I think it works out bloody fantastic.
You've highlighted a subtle but important point of the Intent design. Unlike traditional file-handlers, you can say "I might handle this kind of thing" and then watch what flies by and only respond to what you actually care about (e.g. the market only responding to URLs pointing to the Android market). That makes Intents more powerful and more precise than previous approaches to similar problems.
Actually, they can. Android browsers register to handle such requests. That's how users can switch between default browsers. Additionally, that's how the YouTube app can register to watch YouTube links. I click on a post on reddit, it links to a youtube video and it pops up and asks if I want to open it with the browser, (Dolphin, xScope) or YouTube.