在phonegap应用程序中安装插件

我想用这个插件创建一个phonegap应用程序。 我已经完成了这个步骤来创建和添加插件:

1:我是使用phonegap cli creatin这个应用程序: -

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 。 为什么? 经过四处搜寻,你可能会偶然发现:

  • 在android中检索电话号码
  • TelephonyManager.getLine1Number()失败?
  • 读取设备电话号码会引发NULLPointerException
  • 因此,请转到设备上的设置>关于手机>状态,然后查看“我的电话号码”字段。 它是“未知”吗? 那么运气很不好。 我的SIM没有存储这个号码,所以我得到了和你一样的结果。

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

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


    除非在'deviceready'事件触发后调用代码,否则上面的步骤5将不起作用。

    您需要进行某种调用才能知道文档何时加载,您可以执行以下操作之一:

    <body onload="onLoad()">
    <script>
    function onLoad() {
        document.addEventListener('deviceready', deviceReady, false);
    }
    </script>
    

    OR(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已准备好致电。

    链接地址: http://www.djcxy.com/p/53411.html

    上一篇: Installation of plugin in phonegap app

    下一篇: Phonegap native android plugin