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
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.
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...
What you need to do is detect the device that is connecting to http://www.mycoolapp.com/somepath
If it is a mobile device then you can present them with a page with a link with your custom url scheme that opens your app. Or auto open the custom url of the app if you want.
What you are looking for is called "Universal Links" on iOS and "Deep Linking" on Android.
And there is a Cordova plugin to handle that: https://www.npmjs.com/package/cordova-universal-links-plugin