javascript - PhoneGap/Cordova - 未收到 "camera permission"提示

标签 javascript cordova plugins camera phonegap

我正在使用 PhoneGap 桌面模拟器来测试我的应用程序,该应用程序仅使用设备相机拍照。 一切都在 Android 和 iOS 上的 PhoneGap 应用中运行良好。在拍照之前我收到提示,要求允许 PhoneGap 访问相机。然后,所有 future 的相机请求都可以正常工作。正如我所期望的。

但是,当我创建 native 应用程序并在 iOS/Android 设备上运行它们时,它们不再提示我使用相机的权限,并且在 iOS 上,当我尝试打开相机时,它只会崩溃。在 Android 上,当我触发相机时它什么也不做。

我正在努力弄清楚为什么它可以使用 PhoneGap 应用程序运行,但当我将其作为 native 应用程序运行时却不能运行?我错过了什么吗?

我正在 Ubuntu 服务器上使用 cordova CLI 创建应用程序结构、添加平台/插件等。我正在使用 Adob​​e PhoneGap 构建服务器 (v7.0.1) 来编译 native 应用程序。我只是使用 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>

最佳答案

看来我已经弄清楚了哪里出了问题。

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

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

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

这就是为什么我会遇到一些困难的原因。

关于javascript - PhoneGap/Cordova - 未收到 "camera permission"提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47242313/

相关文章:

javascript - 如何在选择选项中使用复选框? react 钩子(Hook)

ruby-on-rails - 有没有人写过一个插件来给 ActiveResource 添加最后的润色?

internet-explorer - IE是否有任何websocket插件?

javascript - 等待循环先完成

javascript - window.System 对象是 JavaScript ES6 的必需部分吗

javascript - 如何旋转 THREE.TubeGeometry 段?

android - Cordova CLI 命令甚至不返回任何内容 "cordova --version",安装问题?

cordova - 如何在 Android phonegap 应用程序中集成 inmobi 广告

javascript - Phonegap 1.0 Android 捕获视频

C# 使应用程序支持插件,运行多个实例,可能吗?