android - 在 phonegap 应用程序中安装插件

标签 android cordova

我想使用 this plugin 创建一个 phonegap 应用程序.我已经完成了创建和添加插件的步骤:

1:我正在使用 phonegap cli 创建这个应用程序:-

phonegap create GetPhone --id "com.phone" --name "GetPhoneApp"

2:进入项目 build

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还要添加这个插件。当我在本地构建它时,它没有显示任何错误。但它也没有运行。

请帮我找出错误。

最佳答案

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

浏览guide也很有帮助,因此您可以确定自己知道自己在做什么以及为什么要这样做。还要查看 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 设备上,我得到了一个 "" 并得到了成功分支,但是数字显然是空的。

您可以在模拟器上使用 this pretty advanced guide 设置数字如果你想试试。所以,你可以做什么?使用 API 可能什么都没有,如果它没有存储在 SIM 卡上,甚至 Android 系统本身也无法获取您的号码。询问用户或发送短信以通过网络服务查找号码也是一种选择。

关于android - 在 phonegap 应用程序中安装插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20684711/

相关文章:

android - 如何在 Activity 创建时显示 ScrollView 滚动条 2 秒?

java - 构建时错误 : content is not allowed in prolog

android - Drawerlayout正在拦截所有触摸事件

javascript - 内部存储JS文件未与android webview链接

android - anko doAsync 中的 onPostExecute

iOS:如何以编程方式将 View 添加到 Storyboard View

ios - ios中的cordova 'admob free'-应用程序运行时出现异常

ios - Objective c-Symbolication 问题 Error : "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60

android - 将 PhoneGap iOS 应用程序迁移到 Android - 遇到严重的性能问题

javascript - Cordova SQLite : Cannot read property 'transaction' of null