我想使用this plugin创建一个phonegap应用。我已经完成了创建和添加插件的步骤:
1:我使用phonegap cli创建了这个应用程序: -
phonegap create GetPhone --id "com.phone" --name "GetPhoneApp"
2:进入项目并建立
cd GetPhone
phonegap local build android
3:安装插件
phonegap local plugin add https://github.com/macdonst/TelephoneNumberPlugin
4:将telephonenumber.js移动到www文件夹
5:添加
<script type="text/javascript" charset="utf-8" src="telephonenumber.js"></script>
进入index.html然后在下面添加ondeviceready: -
var telephoneNumber = cordova.require("cordova/plugin/telephonenumber");
telephoneNumber.get(function(result) {
alert("result = " + result);
}, function(error) {
alert("error = " + error.code);
});
6:已添加
<plugin name="TelephoneNumber" value="com.simonmacdonald.cordova.plugins.TelephoneNumber"/>
进入www目录中的config.xml。
7:构建
phonegap local build android
8:上传到build.phonegap.com并创建.apk文件。
然后,当我在Android设备上运行此应用程序时,它不会发出任何警报。我采取了什么错误的步骤。我对手机缺口了解得多。谷歌搜索后我创建了这个。我已经看到this tutorial也要添加这个插件。当我在本地构建它时,它不会显示任何错误。但它也没有运行。
请帮我找错。
答案 0 :(得分:5)
首先,我建议您熟悉标准工具,尤其是adb
。这些将允许您提供更多信息,找出真正发生的事情。
浏览guide也很有帮助,因此您可以确定自己知道自己在做什么以及为什么要这样做。看看Android代码的逐步调试。
我还鼓励您从源代码构建Cordova应用程序,而不使用花哨的工具来了解所有组件在何处以及如何组合在一起。您的源代码树令人困惑,您似乎使用了Cordova 3.1和Cordova 2.9的混合物,甚至是Phonegap?您只需要包含cordova.js
和您的脚本(本例中为js/script.js
),此刻不需要其他任何内容。
在谈到重大问题时已经说过了。
您对get
的来电会返回错误。为什么?快速浏览一下插件的源代码:
该插件检索TelephonyManager
并尝试调用getLine1Number
。正如您所看到的,result != null
为false,返回PluginResult.Status.ERROR
,这就是您收到错误提示框的原因。
这是手头的核心问题。 TelephonyManager
为您的请求返回null
。为什么?搜索后你可能会偶然发现:
因此,请转到设置&gt;关于手机&gt;设备上的状态,然后查看“我的电话号码”字段。它是“未知”吗?那么艰难的运气。我的SIM卡没有存储号码,因此我得到的结果与您相同。
另外需要注意的是,至少在Android 4.4上,该方法返回一个空字符串""
而不是null
,因此在我的Android 2.3.7设备上测试时,我得到了一个{ {1}}因此获得了错误分支。但是在我的Android 4.4.2设备上,我得到了null
并获得了成功分支,但显然这个数字是空的。
如果您想尝试,可以使用this pretty advanced guide在模拟器上设置数字。所以,你可以做什么?可能没有使用API,如果它没有存储在SIM卡上,甚至Android系统本身也无法获得你的号码。询问用户或发送短信以通过网络服务发现号码也是一种选择。
答案 1 :(得分:1)
除非在触发'deviceready'事件后调用代码,否则上述步骤5将无效。
您需要某种调用才能知道文档何时加载,您可以执行以下任一操作:
<body onload="onLoad()">
<script>
function onLoad() {
document.addEventListener('deviceready', deviceReady, false);
}
</script>
或(w / jquery):
<script>
$(document).ready(function () {
document.addEventListener('deviceready', deviceReady, false);
}
</script>
然后创建此函数:
function deviceReady() {
var telephoneNumber = cordova.require("cordova/plugin/telephonenumber");
telephoneNumber.get(function(result) {
alert("result = " + result);
}, function(error) {
alert("error = " + error.code);
});
}
这将确保您的文档已加载,并且可以随时致电。