我正在使用PhoneGap桌面模拟器来测试我的应用程序,它只是使用设备相机拍照。在Android和iOS上,一切都适用于PhoneGap应用。在我拍照之前我收到提示,要求允许PhoneGap访问相机。然后,所有未来的相机请求都可以。正如我所料。
然而,当我创建本机应用程序并在iOS / Android设备上运行它们时,它们不再提示我使用相机的许可,而在iOS上它只是在我尝试打开相机时崩溃。在Android上,当我触发相机时它什么都不做。
我正在努力解决为什么它使用PhoneGap应用程序,但是当我作为本机应用程序运行时却没有?我错过了什么吗?
我正在使用我的Ubuntu服务器上的cordova CLI创建App结构,添加平台/插件等。我正在使用Adobe PhoneGap构建服务器(v7.0.1)来编译本机应用程序。我只使用PhoneGap桌面来测试这个问题。
iOS设备操作系统版本= v11.0.3 Android设备操作系统版本= 7.0
我的config.xml文件:
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.mycameraapp" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>My Camera App</name>
<description>
Test App
</description>
<author email="hello@mycameraapp.com" href="http://www.mycameraapp.com">
My Camera App
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="ios" spec="~4.5.3" />
<engine name="android" spec="~6.3.0" />
<plugin name="cordova-plugin-camera" spec="^3.0.0">
<variable name="CAMERA_USAGE_DESCRIPTION" value="To take pictures from within the App" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="To take pictures from within the App" />
</plugin>
</widget>
触发相机的JavaScript:
function upload_case_image(mode) {
openCamera(mode);
}
function setOptions(srcType) {
var options = {
// Some common settings are 20, 50, and 100
quality: localStorage.getItem('image_quality'), // Image quality is defined in the database
destinationType: Camera.DestinationType.DATA_URL,
// In this app, dynamically set the picture source, Camera or photo gallery
sourceType: srcType,
encodingType: Camera.EncodingType.JPEG,
mediaType: Camera.MediaType.PICTURE,
allowEdit: false,
correctOrientation: true //Corrects Android orientation quirks
}
return options;
}
function openCamera(mode) {
var srcType = Camera.PictureSourceType.CAMERA;
var options = setOptions(srcType);
navigator.camera.getPicture(function cameraSuccess(imageUri) {
upload_image(mode, imageUri);
}, function cameraError(error) {
console.debug("Unable to obtain picture: " + error, "app");
}, options);
}
我的index.html位于www中的正常位置,并引用了corodva.js文件:
<!-- Cordova -->
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
答案 0 :(得分:0)
看起来我已经解决了我出错的地方。
我使用的是Cordova,而不是PhoneGap CLI。我在我的电脑上安装了Node.js,然后安装了PhoneGap(npm install -g phonegap @ latest)。
然后使用命令提示符我在Windows中使用PhoneGap创建了应用程序,而不是在Ubunutu上使用Cordova。
当我将其上传到Adobe构建服务器以构建PhoneGap应用程序时,它现在似乎可以正常工作。
有理由为什么我会遇到一些困难。