我完全不熟悉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检查了相同的内容,并且未定义。
我猜这与相机插件有关。我是对的吗?
请帮助
谢谢前锋
答案 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));
});
}