【问题标题】:Cordova Network and Camera API returns undefinedCordova 网络和相机 API 返回未定义
【发布时间】:2014-11-16 19:07:53
【问题描述】:

正在构建我的第一个 Cordova 4.0 应用程序,我真的需要一些帮助,因为我将展示这个应用程序的演示 tmrw...

当我尝试访问 Network info API 和 Camera API(分别为navigator.connectionnavigator.camera)时,它们总是返回 undefined。

我的 Android 清单中有这些权利:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

这里是安装的插件:

org.apache.cordova.camera 0.3.3 "Camera"
org.apache.cordova.console 0.2.11 "Console"
org.apache.cordova.device 0.2.12 "Device"
org.apache.cordova.network-information 0.2.13 "Network Information"

我还从平台文件夹中复制了cordova.js 文件,并将&lt;SCRIPT TYPE="text/javascript" src="js/cordova.js"&gt;&lt;/SCRIPT&gt; 标记添加到我的index.html 中。这里还有一个我尝试访问相机 API 的代码示例:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    $(document).on('click', '.camera', function(){

        if (!navigator.camera) {
            alert("Camera API not supported", "Error");
            return;
        }
        var options =   {   quality: 50,
            destinationType: Camera.DestinationType.DATA_URL,
            sourceType: 1,      // 0:Photo Library, 1=Camera, 2=Saved Album
            encodingType: 0     // 0=JPG 1=PNG
        };
        navigator.camera.getPicture( function(imgData) { return imgData; }, function() { alert('Error');}, options);

    });
}

当我运行它时,我总是收到“不支持相机 API”的警报,这意味着它是未定义的。

我错过了什么?

【问题讨论】:

  • 您是否已将包含cordova.jsscript 标签添加到您的html 文件中?您还需要等待deviceready 事件触发,然后再检查cordova API。您需要显示您的 HTML 文件和代码,以便我们了解问题所在。
  • @frank 是的,添加了cordova.js。我已经用我的 index.html 文件中的一些代码更新了我的帖子。如您所见,它等待设备准备触发,但它仍然未定义。
  • @frank 我从project_folder/platform/android/platform_www 文件夹中复制了我的cordova.js 文件。那是正确的文件吗?
  • 您需要将标签&lt;script type="text/javascript" src="cordova.js"&gt;&lt;/script&gt; 添加到您的index.html 文件中。您要将cordova.js 文件复制到哪里?
  • 是的,我已将其添加到我的 JS 文件夹中。 &lt;script type="text/javascript" src="js/cordova.js"&gt;&lt;/script&gt;

标签: javascript android cordova phonegap-plugins cordova-plugins


【解决方案1】:

所以这个问题的答案是 Cordova 自动将 cordova.js 文件包含在构建项目 www 中。所以我所要做的就是包含&lt;script type="text/javascript" src="cordova.js"&gt;&lt;/script&gt;tag。

也就是说,我不需要复制 cordova.js 文件并将其包含到我的 JS 文件夹中。希望这可能对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 2021-12-15
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多