我使用PhoneGap创建了一个应用程序(所以我用HTML,JavaScript和CSS编写),在这个应用程序中,我写了多个" href"这些功能:
<a href="mailto:marcel.loman@apt-alu-products.com">
marcel.loman@apt-alu-products.com </a><br />
Website: <a href="http://www.apt-alu-products.com">www.apt-alu-products.com</a></p>
我在&#34; head&#34;中添加了一些&#34; Content-security-policy行。我的所有HTML文档的一部分,以确保它在Android上运行apk时可以工作。这个CSP看起来像这样:
<meta http-equiv="Content-Security-Policy"
content="default-src *;
style-src * 'self' 'unsafe-inline' 'unsafe-eval';
script-src * 'self' 'unsafe-inline' 'unsafe-eval';">
最重要的是,我在我的config.xml文件中添加了以下几行&#34; widget&#34;部分:
<allow-intent href="http://*/" />
<allow-intent href="https://*/*" />
<allow-intent href="mailto:*" />
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />
(我知道由于安全原因,不建议使用这些行,但这些是我最后的手段) 尽管有这些线路,当我从中构建一个APK并在我的Android手机上运行时,这些链接仍然不起作用。
互联网上有很多关于这个主题的文章,但我读过的文章都没有能够解决我的问题。
答案 0 :(得分:0)
在没有inappbrowser插件的情况下将这些链接直接添加到应用的HTML中将无效。 http
链接实际上会将内容加载到您的Webview中,替换您的应用代码。
我假设您希望mailto
链接启动默认邮件客户端,并在系统浏览器中打开http
链接?假设这样做,请执行以下操作:
首先,将inappbrowser插件添加到项目中:
cordova plugin add cordova-plugin-inappbrowser
然后添加一些代码以使用inappbrowser插件打开带有window.open
的链接,而不是在Webview中打开链接的默认行为。(以下使用jQuery):
$(document).on('click', 'a[href^=http], a[href^=mailto]', function(e){
e.preventDefault(); // prevent Webview from following link
window.open($(this).attr('href'), '_system'); // Open with inappbrowser
});