如何安装和调用cordova插件

Posted

技术标签:

【中文标题】如何安装和调用cordova插件【英文标题】:How to install and call cordova plugins 【发布时间】:2014-01-27 15:01:25 【问题描述】:

我已经安装了 cordova(3.3 版)并使用这些命令构建了一个示例项目:

$ cordova create hello com.example.hello "HelloWorld"
$ cd hello
$ cordova platform add android
$ cordova build

并将项目导入 Eclipse(根据http://cordova.apache.org/docs/en/3.3.0/guide_platforms_android_index.md.html#Android%20Platform%20Guide)。我可以通过选择 Run As → Android Application 从 Eclipse 成功运行该应用程序。

现在我想使用cordova 的通知功能。我使用以下命令添加了插件(遵循本指南:http://cordova.apache.org/docs/en/3.3.0/cordova_notification_notification.md.html#Notification):

$ cordova plugin add org.apache.cordova.dialogs
$ cordova plugin add org.apache.cordova.vibration

当我输入时:

$ cordova plugin ls

它正确地列出了我刚刚添加的插件。

我返回 Eclipse 并将以下代码粘贴到 assets/www/index.html 中(覆盖 index.html 中的现有代码):

<!DOCTYPE html>
<html>
  <head>
    <title>Notification Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // device APIs are available
    //
    function onDeviceReady() 
        // Empty
    

    // Show a custom alert
    //
    function showAlert() 
        navigator.notification.alert(
            'You are the winner!',  // message
            'Game Over',            // title
            'Done'                  // buttonName
        );
    

    // Beep three times
    //
    function playBeep() 
        navigator.notification.beep(3);
    

    // Vibrate for 2 seconds
    //
    function vibrate() 
        navigator.notification.vibrate(2000);
    

    </script>
  </head>
  <body>
    <p><a href="#" onclick="showAlert(); return false;">Show Alert</a></p>
    <p><a href="#" onclick="playBeep(); return false;">Play Beep</a></p>
    <p><a href="#" onclick="vibrate(); return false;">Vibrate</a></p>
  </body>
</html>

当我将它部署到设备时,它会显示三个链接(显示警报、播放哔声和振动)。当我按下这些时,我希望会发生相应的本机通知,但事实并非如此。相反,我收到以下错误消息(显示在 LogCat 中):

显示警报: 未捕获的 ReferenceError:未定义 showAlert:45

播放哔声:未捕获的引用错误:未定义播放哔声:46

振动:未捕获的参考错误:未定义振动:47

我应该如何修复这些错误?

提前致谢!

【问题讨论】:

【参考方案1】:

您是否尝试过更新文件并运行 www 文件夹中的所有内容?

【讨论】:

【参考方案2】:

在您的问题中,您没有提到更新 API 文档中提到的 config.xml 和 AndroidManifest.xml 文件。我将它们复制在这里以供参考。

(in app/res/xml/config.xml)
<feature name="Notification">
    <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
</feature>
<feature name="Vibration">
    <param name="android-package" value="org.apache.cordova.vibration.Vibration" />
</feature>


(in app/AndroidManifest.xml)
<uses-permission android:name="android.permission.VIBRATE" />

如需进一步说明,请参阅此问题的答案。 Should a phonegap plugin be declared in the config.xml file?

【讨论】:

感谢您的回复!我没有提到更新文件,因为我注意到 app/res/xml/config.xml 和 app/AndroidManifest.xml 在添加插件时已经自动更新了。

以上是关于如何安装和调用cordova插件的主要内容,如果未能解决你的问题,请参考以下文章

Ionic/Cordova:如何将插件安装到现有项目中?

如何使用sdk创建cordova插件

Cordova 版本 6.4.0 - 如何安装 httpd 插件?

如何安装 facebookconnect cordova 插件?

Cordova 2.9.0 如何安装状态栏插件

如何从 zip 文件安装 cordova 插件