Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Launch custom android application from android browser

Can anybody please guide me regarding how to launch my android application from the android browser?

like image 591
Parimal Modi Avatar asked Jun 02 '10 14:06

Parimal Modi


People also ask

Can I open Android app from URL?

Every android app will have list of urls that it can open. So you have to go to that app settings and tell that it should open in browser for the urls and not in the app. To do that go to Settings -> Apps -> scroll down to the app that you don't want URLs to open in -> Tap on 'Open by Default' and select always Ask.


1 Answers

Use an <intent-filter> with a <data> element. For example, to handle all links to twitter.com, you'd put this inside your <activity> in your AndroidManifest.xml:

<intent-filter>     <data android:scheme="http" android:host="twitter.com"/>     <action android:name="android.intent.action.VIEW" /> </intent-filter> 

Then, when the user clicks on a link to twitter in the browser, they will be asked what application to use in order to complete the action: the browser or your application.

Of course, if you want to provide tight integration between your website and your app, you can define your own scheme:

<intent-filter>     <data android:scheme="my.special.scheme" />     <action android:name="android.intent.action.VIEW" /> </intent-filter> 

Then, in your web app you can put links like:

<a href="my.special.scheme://other/parameters/here"> 

And when the user clicks it, your app will be launched automatically (because it will probably be the only one that can handle my.special.scheme:// type of uris). The only downside to this is that if the user doesn't have the app installed, they'll get a nasty error. And I'm not sure there's any way to check.


Edit: To answer your question, you can use getIntent().getData() which returns a Uri object. You can then use Uri.* methods to extract the data you need. For example, let's say the user clicked on a link to http://twitter.com/status/1234:

Uri data = getIntent().getData(); String scheme = data.getScheme(); // "http" String host = data.getHost(); // "twitter.com" List<String> params = data.getPathSegments(); String first = params.get(0); // "status" String second = params.get(1); // "1234" 

You can do the above anywhere in your Activity, but you're probably going to want to do it in onCreate(). You can also use params.size() to get the number of path segments in the Uri. Look to javadoc or the android developer website for other Uri methods you can use to extract specific parts.

like image 80
Felix Avatar answered Oct 02 '22 22:10

Felix