我无法找到解决问题的方法。
我找到了许多自定义网址的答案(mycoolapp://somepath
)。
This plugin会添加自定义网址 - Sheme。
但我不想要自定义网址 - Sheme,我想要一个像这样的“普通”网址(http://www.mycoolapp.com/somepath
)。
如果你在浏览器中打开它或者点击超链接,那么它会要求你打开我的应用程序(就像谷歌地图那样)。
这个问题可能已经有了答案,但我找不到。
修改
如果您不知道我的意思,那么如果您点击Android设备上我的网站链接,那该怎么回事:
只需选择我的应用即可。
答案 0 :(得分:14)
对于同样的问题,我使用了现有的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);
//...
});
}
修改强>
我刚刚注意到一种可能不需要的行为。当您使用来自其他应用程序的链接(意图)打开应用程序时,它(在许多情况下)将创建一个新实例而不使用已经运行的实例(使用gmail和Skype进行测试)。为了防止这种情况,解决方案是在config.xml文件中更改Android启动模式:
<preference name="AndroidLaunchMode" value="singleTask" />
(适用于cordova 3.5,不确定旧版本)
然后你需要再添加一个ondeviceready函数:
window.plugins.webintent.onNewIntent(function(url) {
console.log("INTENT onNewIntent: " + url);
});
当应用程序已经运行并且意图带到前面时,会触发此操作。
答案 1 :(得分:3)
您正在寻找的是&#34; Universal Links&#34;在iOS和&#34;深层链接&#34;在Android上。
还有一个Cordova插件可以处理:https://www.npmjs.com/package/cordova-universal-links-plugin
答案 2 :(得分:0)
您需要做的是检测连接到http://www.mycoolapp.com/somepath
的设备如果它是移动设备,那么您可以向他们展示一个页面,其中包含一个打开您的应用的自定义网址方案的链接。或者,如果需要,可以自动打开应用的自定义网址。
答案 3 :(得分:0)
您应该在Android清单中的intent-filter
添加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: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
甚至更多here ......
答案 4 :(得分:0)
对于希望使用 this answer 但通过 config.xml 修改 AndroidManifest 的任何人,以下内容对我有用。无论我使用哪种排列,都无法尝试匹配 NameError: name 'crazyvar' is not defined
。
android:name