how can cordova open app from http or https url?

I found many answers for a custom URL-Scheme like this (mycoolapp://somepath).

This plugin for example adds a custom URL-Sheme.*

But I don’t want a custom URL-Scheme, I want a “normal” URL like this (http://www.mycoolapp.com/somepath).

If you open this in you Browser or click on a Hyperlink for example, then it should ask you to open my app (like google maps does it).

This question maybe already has an answer, but i can’t find it.

If you don’t know what I mean, that’s how it should look if you click on the link to my website on an Android Device:

application link

Just with my app to select.

8 thoughts on “how can cordova open app from http or https url?”

  1. You should add an intent-filter to your activity in the android manifest. Something like this:

    <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" />
       <data android:host="www.mycoolapp.com" />
       <data android:pathPrefix="/somepath" />
    </intent-filter>
    

    more on what data you can add here: http://developer.android.com/guide/topics/manifest/data-element.html

    and even more here on stackoverflow…

    Reply
  2. For the same problem I’ve used existing webintent plugin, modified the android manifest file – add those lines to activity

    <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:host="example.com" android:scheme="http" />
    </intent-filter>
    

    and modified the index.html ondeviceready:

    function deviceReady() {
        window.plugins.webintent.getUri(function(url) {
            console.log("INTENT URL: " + url);
            //...
        }); 
    }
    

    EDIT

    I’ve just noticed a behavior which may be unwanted. When you open the app using the link (intent) from another application, it will (in many cases) create a new instance and not use the already running one (tested with gmail and skype). To prevent this a solution is to change Android Launch mode in config.xml file:

    <preference name="AndroidLaunchMode" value="singleTask" />
    

    (It works with cordova 3.5, not sure about the older version)

    Then you need to add one more function to ondeviceready:

    window.plugins.webintent.onNewIntent(function(url) {
        console.log("INTENT onNewIntent: " + url);
    });
    

    This one is triggered when the app was already running and was brought to front with intent.

    Reply
  3. For anyone looking to use this answer, but modifying the AndroidManifest via config.xml, the following did the trick for me. Trying to match on android:name didn’t work no matter which permutations I used.

            <config-file target="AndroidManifest.xml" parent="/manifest/application/activity[@android:label='@string/activity_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" />
                    <data android:scheme="https" />
                    <data android:host="www.mysite.com" />
                    <data android:pathPrefix="/whatever/path" />
                </intent-filter>
            </config-file>
    
    Reply

Leave a Comment