PhoneGap / Cordova - 未获得“相机许可”提示

时间:2017-11-11 20:10:49

标签: javascript cordova plugins camera phonegap

我正在使用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>

1 个答案:

答案 0 :(得分:0)

看起来我已经解决了我出错的地方。

我使用的是Cordova,而不是PhoneGap CLI。我在我的电脑上安装了Node.js,然后安装了PhoneGap(npm install -g phonegap @ latest)。

然后使用命令提示符我在Windows中使用PhoneGap创建了应用程序,而不是在Ubunutu上使用Cordova。

当我将其上传到Adobe构建服务器以构建PhoneGap应用程序时,它现在似乎可以正常工作。

有理由为什么我会遇到一些困难。