android phonegap - navigator.camera未定义

时间:2014-02-13 11:27:13

标签: android cordova

我完全不熟悉phonegap。我开始使用phonegap构建 - 运行'npm install -g phonegap'。 我的系统是windows7。 当我运行命令'phonegap run android'时,我收到如下控制台消息:

 [phonegap] detecting Android SDK environment..
 [phonegap] using the local environment
 [phonegap] compiling Android...
 [phonegap] successfully compiled Android app
 [phonegap] trying to install app onto device
 [phonegap] successfully installed onto device

我可以看到我的设备上运行的应用程序(sony Xperia -E)。 但是当我输入我的javascript代码时:

bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
    app.receivedEvent('deviceready');
},


    // Update DOM on a Received Event
receivedEvent: function(id) {

    console.log('Received Event: ' + id);
    //HERE
    alert(navigator.camera)
}

我一直警惕说'未定义'。我使用navigtaor.geolocation检查了相同的内容,并且未定义。

我猜这与相机插件有关。我是对的吗?

请帮助

谢谢前锋

5 个答案:

答案 0 :(得分:4)

你必须添加以下内容:

- >应用程序/ RES / XML / plugins.xml

<plugin name="Camera" value="org.apache.cordova.CameraLauncher" />

- &GT;应用程序/ AndroidManifest

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

答案 1 :(得分:2)

在查看itno this项目后,我发现了我的错误

我尝试使用index.js附带的'ondeviceready'事件处理程序。

不知道为什么,但是当摄像机未定义时,此处理程序将触发。 我在页面上指定了自己的处理程序后

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


function onDeviceReady() {
    alert(navigator.camera);    
}

相机已定义

答案 2 :(得分:2)

应该将cordova-plugin-camera插件添加到您的PhoneGap / Cordova项目中,这样就可以让这个示例正常工作。

请参阅右侧命令:

cordova plugin add cordova-plugin-camera

答案 3 :(得分:1)

在运行phonegap应用程序之前,请确保添加lib:

phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-media-capture.git
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-media.git

如果你在构建应用程序之前省略加载插件它将无法正常工作,我有时也会遇到安装插件的问题,所以如果你确实安装了它们,请尝试删除并重新添加它们,这对我有用。您可以通过以下方式检查安装的插件:

phonegap local plugin list

有关详细信息,请访问:Official Phonegap Documenattion

关于:navigtaor.geolocation它是一个标准的HTML5调用,所以如果没有安装地理定位插件(至少在Android上),它将被解释为标准的HTML5地理定位调用。

答案 4 :(得分:0)

这对我有用,我想有人需要发布。

const ObjectId = mongoose.Types.ObjectId;
function funcName() {
    return new Promise((resolve, reject) => {
      db.category.update(
           { },
           { $pull: { productList: { _id: ObjectId(productId) } } },
           { multi: true }
      )
        .then((result) => resolve())
        .catch((err) => reject(err));
    });
  }