Как Cordova открыть приложение с http или https URL?

Я нашел много ответов для пользовательской схемы URL, подобной этой (mycoolapp://somepath).

Этот плагин, например, добавляет пользовательский URL-Sheme. *

Но мне не нужна пользовательская URL-схема, мне нужен такой "нормальный" URL (http://www.mycoolapp.com/somepath).

Если вы откроете это в своем браузере или, например, нажмете на гиперссылку, вам следует попросить открыть мое приложение (как это делают карты Google).

На этот вопрос, возможно, уже есть ответ, но я не могу его найти.

Если вы не знаете, что я имею в виду, то как это должно выглядеть, если вы нажмете ссылку на мой сайт на устройстве Android:

application link

Просто с моим приложением, чтобы выбрать.

Ответ 1

Для той же проблемы я использовал существующий плагин webintent, изменил файл манифеста Android - добавьте эти строки в активность

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

и изменил index.html ondeviceready:

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

EDIT

Я только что заметил поведение, которое может быть нежелательным. Когда вы откроете приложение, используя ссылку (намерение) из другого приложения, оно (во многих случаях) создаст новый экземпляр и не будет использовать уже работающий (протестирован с gmail и skype). Чтобы предотвратить это, нужно изменить режим запуска Android в файле config.xml:

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

(работает с cordova 3.5, не уверен насчет более старой версии)

Затем вам нужно добавить еще одну функцию в ondeviceready:

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

Это срабатывает, когда приложение уже запущено и намеренно выведено на передний план.

Ответ 3

Что вам нужно сделать, это обнаружить устройство, которое подключается к http://www.mycoolapp.com/somepath

Если это мобильное устройство, вы можете представить их со страницей со ссылкой на свою настраиваемую схему URL-адресов, которая откроет ваше приложение. Или автоматически откройте пользовательский URL-адрес приложения, если хотите.

Ответ 4

Вы должны добавить intent-filter к вашему activity в манифесте android. Что-то вроде этого:

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

подробнее о том, что data вы можете добавить здесь: http://developer.android.com/guide/topics/manifest/data-element.html

и даже больше здесь в stackoverflow...