how can cordova open app from http or https url?

后端 未结 4 1442
刺人心
刺人心 2021-02-04 08:03

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

相关标签:
4条回答
  • 2021-02-04 08:40

    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.

    0 讨论(0)
  • 2021-02-04 08:40

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

    0 讨论(0)
  • 2021-02-04 08:44

    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.

    0 讨论(0)
  • 2021-02-04 08:48

    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

    0 讨论(0)
提交回复
热议问题