Android Href尽管CSP和<;允许意图>;

Android Href尽管CSP和<;允许意图>;,android,html,cordova,phonegap-build,content-security-policy,Android,Html,Cordova,Phonegap Build,Content Security Policy,我使用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">

我使用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>

网站:

我在所有HTML文档的“head”部分添加了一些“Content security policy”行,以确保在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文件中的“小部件”部分之间添加了以下行:


(我知道出于安全原因不建议使用这些线路,但这是我最后的选择) 尽管有这些线路,但当我用这些线路构建一个APK并在我的Android手机上运行时,这些链接仍然不起作用


互联网上有很多关于这个主题的文章,但我读过的没有一篇能够解决我的问题。

在没有插件的情况下直接将这些链接添加到应用程序的HTML中是行不通的。
http
链接实际上会将内容加载到你的网络视图中,取代你的应用程序代码

我假设您希望
mailto
链接启动默认邮件客户端,并希望
http
链接在系统浏览器中打开?假设如此,请执行以下操作:

首先,将inappbrowser插件添加到项目中:

cordova plugin add cordova-plugin-inappbrowser
然后添加一些代码以使用inappbrowser插件打开带有
窗口的链接。打开
而不是在Webview中打开链接的默认行为。(以下使用jQuery):


在没有插件的情况下直接将这些链接添加到应用程序的HTML中将不起作用。
http
链接实际上会将内容加载到您的Web视图中,替换您的应用程序代码

我假设您希望
mailto
链接启动默认邮件客户端,并希望
http
链接在系统浏览器中打开?假设如此,请执行以下操作:

首先,将inappbrowser插件添加到项目中:

cordova plugin add cordova-plugin-inappbrowser
然后添加一些代码以使用inappbrowser插件打开带有
窗口的链接。打开
而不是在Webview中打开链接的默认行为。(以下使用jQuery):


非常感谢,我确实下载了一个插件。我从来没有这样做过,所以需要进一步研究。但是我选择安装[cordova插件白名单]()因为我不必使用查询部分。这也很好。非常感谢,我确实下载了一个插件。我从来没有这样做过,所以需要进一步研究。但是我选择安装[cordova插件白名单](),因为我不必使用查询部分。这也很好。
$(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
});