'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.