I'd like to be able to prompt my app to open a link when user clicks on an URL of a given pattern instead of allowing the browser to open it. This could be when the user is on a web page in the browser or in an email client or within a WebView in a freshly-minted app.
For example, click on a YouTube link from anywhere in the phone and you'll be given the chance to open the YouTube app.
How do I achieve this for my own app?
Use an android.intent.action.VIEW of category android.intent.category.BROWSABLE.
From Romain Guy's Photostream app's AndroidManifest.xml,
<activity android:name=".PhotostreamActivity" android:label="@string/application_name"> <!-- ... --> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="flickr.com" android:pathPrefix="/photos/" /> <data android:scheme="http" android:host="www.flickr.com" android:pathPrefix="/photos/" /> </intent-filter> </activity>
Once inside you're in the activity, you need to look for the action, and then do something with the URL you've been handed. The Intent.getData()
method gives you a Uri.
final Intent intent = getIntent(); final String action = intent.getAction(); if (Intent.ACTION_VIEW.equals(action)) { final List<String> segments = intent.getData().getPathSegments(); if (segments.size() > 1) { mUsername = segments.get(1); } }
It should be noted, however, that this app is getting a little bit out of date (1.2), so you may find there are better ways of achieving this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With