繁体   English   中英

在phonegap应用程序中安装插件

[英]Installation of plugin in phonegap app

我想使用这个插件创建一个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设备上运行此应用程序时,它不会发出任何警报。 我采取了什么错误的步骤。 我对手机缺口了解得多。 谷歌搜索后我创建了这个。 我已经看到本教程也添加了这个插件。 当我在本地构建它时,它不会显示任何错误。 但它也没有运行。

请帮我找错。

首先,我建议您熟悉标准工具,尤其是adb 这些将允许您提供更多信息,找出真正发生的事情。

浏览指南也很有帮助,因此您可以确定自己知道自己在做什么以及为什么要这样做。 查看Android代码的逐步调试。

我还鼓励您从源代码构建Cordova应用程序,而无需使用花哨的工具来了解所有组件在哪里以及如何组合在一起。 您的源代码树令人困惑,您似乎使用了Cordova 3.1和Cordova 2.9的混合物,甚至是Phonegap? 您只需要包含cordova.js和您的脚本(在本例中为js/script.js ),此刻不需要其他内容。

话虽如此,关于重大问题。

您的get调用返回错误。 为什么? 快速浏览一下插件的源代码:

https://github.com/macdonst/TelephoneNumberPlugin/blob/master/src/com/simonmacdonald/cordova/plugins/TelephoneNumber.java

该插件检索TelephonyManager并尝试调用getLine1Number 正如你可以看到result != null是false,它会返回一个PluginResult.Status.ERROR ,这就是你得到错误警告框的原因。

这是手头的核心问题。 TelephonyManager为您的请求返回null 为什么? 搜索后你可能会偶然发现:

因此,请导航至设备上的设置>关于手机>状态,然后查看“我的电话号码”字段。 它是“未知”吗? 那么艰难的运气。 我的SIM卡没有存储号码,因此我得到了与您相同的结果。

另外需要注意的是,至少在Android 4.4上,该方法返回一个空字符串""而不是null ,因此在我的Android 2.3.7设备上测试时,我得到一个null ,从而获得了错误分支。 但是在我的Android 4.4.2设备上,我得到了一个""并获得了成功分支,但显然这个数字是空的。

如果您想尝试,可以使用这个非常高级的指南在模拟器上设置数字。 所以,你可以做什么? 可能没有使用API​​,如果它没有存储在SIM卡上,甚至Android系统本身也无法获得你的号码。 询问用户或发送SMS以通过web服务发现号码也是一种选择。

除非在触发'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);
    });
}

这将确保您的文档已加载,并且cordova已准备好呼叫。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM