在设置了电话号码的应用浏览器中打开网页后,我需要弹出一个电话号码进行通话。
任何适用于phonegap的插件?
GL
答案 0 :(得分:1)
不确定您的问题意味着什么,但据我了解,您需要拨打按钮点击号码。在HTML文件中尝试以下操作:
<a class="button" href="tel://123456">1234563</a>
如果您从控制器获取号码,请使用:
<a class="button" href="tel://{{number}}">123456</a>
答案 1 :(得分:0)
今天我遇到了一个我之前没有做过的功能请求 - 在应用内拨打号码。一些快速研究表明它可能使用特定的URI方案。
什么是URI方案?老实说维基百科在描述它们方面比我做得更好,但我认为它们是允许特定功能在互联网上发生的东西,因此它们通常被称为协议。您可能已经看过它们 - 最常见的是http:和https :(用于网页浏览)和ftp:等。有些是应用程序所独有的,并且实际上不符合方案,并且绝对不是“协议”,例如mailto :(在人的计算机上打开邮件客户端),javascript:或关于: - 实际上,请尝试输入about:在浏览器的地址栏中点击键盘上的“enter”,注意会发生什么......
在我们想要从我们的应用程序中拨打号码的情况下,我们需要一种告诉手机我们想要拨打电话的方式。为此目的有一个名为tel:的方案。使用此方案的样本编号如下所示:“tel:+ 1-800-555-1234”。如果您想在全球范围内使用号码,您可以使用包含国家/地区代码的国际号码。
实现这一点很简单,我们可以在我们的移动html5应用程序中这样做:
... 叫这个号码 ... 理想情况下,虽然我们会委托事件并启动一个函数来调用我们的神秘电话号码。要将URL(“tel”url)发送到浏览器,我们将编写以下内容:
... document.location.href =&#39; tel:+ 1-800-555-1234&#39 ;; ... 从PhoneGap 3.6开始,所有方案都受白名单的约束。这意味着您必须将tel方案添加到第二个白名单,以允许您的应用启动外部应用程序。为此,您需要编辑config.XML以包含以下内容(包括mailto示例):
请访问此处获取更多信息:Cordova 3.6.0白名单指南。
对此主题感兴趣的是让Android将电话号码(以及URL和mailto方案)视为文本字段中的可点击链接。我没有对它进行测试,但尝试将以下内容添加到config.xml中。
有关这方面的更多信息,请访问:http://developer.android.com/reference/android/widget/TextView.html#attr_android:autoLink。
[编辑:请注意,以下内容不再适用,但仍出于历史目的。]
当我们在Android 2.3.6中运行上述代码时,会出现电话拨号程序,并且我们的号码已经预先填好,可以拨打电话。不幸的是,iOS 5不会发生这种情况。对iOS文档的快速回顾意味着它应该可行 - 所以我认为它刚刚破解。 无需恐慌,有一个PhoneGap插件可用来处理事情。该插件可以从这里下载:
点击此处下载iOS Phone Dialer PhoneGap插件
安装简单 - 只需将“m”和“h”文件拖放到xcode项目的classes文件夹中即可。当您执行此操作时,将出现一个带有一些选项的对话框 - 请务必单击单选按钮以复制“...文件,如果需要..”。
接下来,更新PhoneGap.plist文件以反映您正在添加新插件。下载插件的链接将plist值解释为“phonedialer&gt; PhoneDialer“......但我认为用图像更容易解释:
最后一步是将“PhoneDialer.js”javascript文件放在项目根目录中的某个位置,然后通过脚本标记将其添加到index.html文件中。
现在安装了Phone Dialer插件,你自然想知道如何使用它:
... window.plugins.phoneDialer.dial(&#39; 1-800-555-1234&#39); ... 总而言之,这很简单直接,但是现在您有两种方法可以在一个项目中拨号。你想要的是使用Android中的tel:url方案和iOS中的Phone Dialer插件。
在Sencha Touch中,我们有一个名为Ext.is对象的东西,其属性反映了您可能想知道的有关您的移动应用程序所在环境的所有内容。
出于我们的目的,我们想知道的是,如果我们在iOS中,或者如果我们在Android中。这两行为我们提供了答案:
... Ext.is.Android //布尔,&#34; true&#34;对于android,否则为false Ext.is.iOS // boolean,&#34; true&#34;对于iOS,否则为false ... 多数民众赞成我们需要在我们的移动应用程序中通过两个平台进行电话拨号。让我们构建一个使用上述之一的函数(我们不需要两者),我们也应该让用户在这个问题上做出选择,所以下面的代码包含一条消息给用户,看看他们是否真的想要暂停应用程序以支持设备的电话拨号:
...
function callSomeone(){
var msg = Ext.Msg.confirm(&#39;请确认&#39;,&#39;您确定要拨打电话吗?&#39;,
函数(r)的{
if(r ==&#39; yes&#39;){
if(Ext.is.Android){
document.location.href =&#39; tel:+ 1-800-555-1234&#39 ;;
} else {//我们假设设备正在运行iOS
window.plugins.phoneDialer.dial(&#39; 1-800-555-1234&#39);
}
}
});
msg.doComponentLayout();
}
...
一切都完成了...我想最后要做的就是提供一个完整的Sencha Touch示例,以及一些屏幕截图...
... Ext.setup({ onReady:function(){
var rootPanel = new Ext.form.FormPanel({
fullscreen: true,
items: [
{
xtype:'button',
text:'Call 1-800-555-1234',
scope:this,
handler: callSomeone
}
],
dockedItems:[
{
xtype:'toolbar',
dock:'top',
title:'Phone Dialer Example'
}
]
}
);
function callSomeone(){
var msg = Ext.Msg.confirm('Please Confirm','Are you sure you want to make a phone call?',
function(r){
if (r == 'yes'){
if (Ext.is.Android){
document.location.href = 'tel:+1-800-555-1234';
} else { // we assume the device is running iOS
window.plugins.phoneDialer.dial('1-800-555-1234');
}
}
}
);
msg.doComponentLayout();
}
}
}); ...
来自http://rickluna.com/wp/2012/02/making-a-phone-call-from-within-phonegap-in-android-and-ios/