Javascript cordova如何从http或https url打开应用程序?

Javascript cordova如何从http或https url打开应用程序?,javascript,cordova,url-scheme,Javascript,Cordova,Url Scheme,我找到了许多这样的自定义URL方案的答案(mycoolapp://somepath) 例如,添加一个自定义URL* 但是我不想要定制的URL方案,我想要一个像这样的“普通”URL(http://www.mycoolapp.com/somepath) 例如,如果您在浏览器中打开此应用程序或单击超链接,则它应要求您打开我的应用程序(就像谷歌地图那样) 这个问题可能已经有了答案,但我找不到 如果你不知道我的意思,那么如果你在安卓设备上点击我网站的链接,应该是这样的: 只需选择我的应用程序。您需要做的

我找到了许多这样的自定义URL方案的答案(
mycoolapp://somepath

例如,添加一个自定义URL*

但是我不想要定制的URL方案,我想要一个像这样的“普通”URL(
http://www.mycoolapp.com/somepath

例如,如果您在浏览器中打开此应用程序或单击超链接,则它应要求您打开我的应用程序(就像谷歌地图那样)

这个问题可能已经有了答案,但我找不到

如果你不知道我的意思,那么如果你在安卓设备上点击我网站的链接,应该是这样的:


只需选择我的应用程序。

您需要做的是检测连接到的设备


如果是移动设备,则您可以向他们展示一个页面,其中包含打开应用程序的自定义url方案的链接。如果需要,也可以自动打开应用程序的自定义url。

您应该在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>


更多关于stackoverflow…

对于我使用的现有插件的相同问题,修改了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>
编辑

我刚刚注意到一种可能不受欢迎的行为。当您使用另一个应用程序的链接(intent)打开应用程序时,它将(在许多情况下)创建一个新实例,而不是使用已经运行的实例(通过gmail和skype测试)。要防止出现这种情况,解决方案是在config.xml文件中更改Android启动模式:

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

这一次是在应用程序已经运行时触发的,并有意将其带到前台。

您正在寻找的是iOS上的“通用链接”和Android上的“深度链接”

还有一个Cordova插件可以处理这个问题:

对于任何想使用的人,但是通过config.xml修改AndroidManifest,下面的方法帮了我的忙。无论我使用哪种排列方式,尝试在android:name上匹配都不起作用



您是否尝试过使用http url作为url方案?@jcesarmobile这不意味着(如果它真的有效)每个网站都会打开我的应用程序吗?我是说整个网站的url http://www.mycoolapp.com/,而不仅仅是http://。一些苹果应用程序可以通过一个普通的网址打开,但可能它们使用了一些私有的API,我还没有测试过;因此,如果他们有我的应用程序,它会打开,如果没有,它会打开网站。对于这个问题中链接到的EddyVerbruggen插件,它会像这样工作吗?浏览器必须用您的示例呈现整个页面。我希望用户可以在浏览器打开之前进行选择。老实说,祝你好运,如果你找到了,请告诉我。这是一个有趣的想法,但我不知道您是否能够区分这个http请求与另一个不同。我会调查他们的意图。您可以将服务器设置为在检测到它是一个设备时立即重定向到您的自定义url方案。linkedin就是这样做的。谢谢,我会看一看,但我会先提供一个cordova插件或类似的东西:它对cordova(phonegap)应用程序有效吗?我不认为我可以访问android清单。应该可以正常工作。我通常创建一个特定于应用程序的插件,其全部目的是配置android清单。检查规范。您对配置文件元素感兴趣。添加上面截取的内容,您就完成了,cordova cli应该按照插件中的指定修补android清单。xmli发现代码中有一个小问题,您还应该添加onNewIntent,并可能更改启动模式,请查看编辑器。该编辑器工作得非常好,无需安装插件或设置任何内容。对于iOS来说,这与什么是等效的?在应用程序未启动时工作正常,如果在后台启动则无法工作,必须添加window.plugins.webintent.onnewintent该插件已被弃用。@SohrabTaee此fork工作正常,现在也已存档。z
<preference name="AndroidLaunchMode" value="singleTask" />
window.plugins.webintent.onNewIntent(function(url) {
    console.log("INTENT onNewIntent: " + url);
});