我最近将基于cordova的Android应用程序从3.5.0升级到3.6.3.特殊链接"tel","sms"和"mailto"停止工作.点击后,没有任何反应.我可以在AndroidManifest.xml,Confix.xml或其他任何东西中做些什么来让它们恢复工作吗?
我构建了两个相同且非常简单的Android应用程序来证明我的怀疑,一个用cordova 3.5.0和一个用3.6.3.它们都有一个简单的链接:
<a href="tel:1(858)xxx-xxxx">Call</a>
Run Code Online (Sandbox Code Playgroud)
第一个工作,第二个工作不起作用.
我认为他们添加了一种安全功能,以某种方式阻止意图.
PS:两个应用程序都是这样构建的:
cordova create app com.tmp.app "App"
cordova platform add android
Run Code Online (Sandbox Code Playgroud)
在index.html中,我在设备就绪块上添加了上面的电话链接.
请帮忙.
abe*_*abi 91
我终于找到了答案.您所要做的就是将以下内容添加到config.xml:
<access origin="tel:*" launch-external="yes"/>
<access origin="geo:*" launch-external="yes"/>
<access origin="mailto:*" launch-external="yes"/>
<access origin="sms:*" launch-external="yes"/>
<access origin="market:*" launch-external="yes"/>
Run Code Online (Sandbox Code Playgroud)
我希望这有助于每个人.
这一切都始于IBM!
我有一个基于3.5.1版本的应用程序,所有特殊链接工作正常.但是当我在最新版本3.6.3上升级时,它们无法正常工作.
所以我在代码中做了以下更改,现在它们工作正常.
添加InAppBrowser插件
cordova插件添加org.apache.cordova.inappbrowser
在JS文件中创建自定义函数以在InApp浏览器中打开特殊链接
var app = {
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
app.receivedEvent('deviceready');
},
openNativeAppWindow: function(data) {
window.open(data, '_system');
}
Run Code Online (Sandbox Code Playgroud)
};
您调用特殊链接(如短信或电话)的地方然后使用数据传递您的自定义网址,并让它打开本机浏览器窗口,这反过来将推动本机应用程序处理特殊网址.
几个例子:
<br><br><input type="button" onClick="app.openNativeAppWindow('http://google.com')" value="Open Google"/>
<br><br><a onClick="app.openNativeAppWindow('geo://0,0?q=dallas')" data-rel="external">google maps</a>
<br><br><a onClick="app.openNativeAppWindow('geo:0,0?q=Bacau')">Geolocation Test</a>
<br><br><a onClick="app.openNativeAppWindow('geo:0,0?q=34.99,-106.61(Treasure)')">longitude & latitude with a string label</a>
<br><br><a onClick="app.openNativeAppWindow('geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA')">street address Test</a>
<br><br><a onClick="app.openNativeAppWindow('sms:2125551212')">SMS</a>
<br><br><a onClick="app.openNativeAppWindow('mms:2125551212')">MMS</a>
<br><br><a onClick="app.openNativeAppWindow('tel:2125551212')">Open Phone Dialer</a>
Run Code Online (Sandbox Code Playgroud)
从 Cordova 4.0 开始,您必须包含白名单插件。
<gap:plugin name="cordova-plugin-whitelist" source="npm" />
<allow-intent href="tel:*" />
Run Code Online (Sandbox Code Playgroud)
https://github.com/apache/cordova-plugin-whitelist