javascript - 如何在调用 camera.getPicture 之前检查相机权限

标签 javascript android ios cordova camera

我想在实际打开相机之前确保应用程序具有访问相机的权限,这样如果应用程序没有权限,可以通知用户他们需要在操作系统中更改权限。

这是必要的原因是,当用户不小心拒绝了对相机的许可时,他将不得不导航到操作系统本身内的应用程序权限以更改权限。大多数用户可能不知道这一点,因此我想让他们知道。

在下面的示例中,我想检查应用程序是否有权访问相机。如果没有,请通知用户。
我该怎么做?

        fromCamera: function (callback) {

            // PERMISSION CHECK HERE -> if camera permission is FALSE show an alert to notify the user
            navigator.notification.alert(
                "This app does not have access to the camera. Blabla do this blabla",
                ["Ok"]
            );

            if (callback === undefined) throw 'undefined callback parameter!';

            navigator.camera.getPicture(onCameraSuccess, onCameraFail, {
                quality: 90,
                encodingType: Camera.EncodingType.JPEG,
                saveToPhotoAlbum: true,
                allowEdit: false,
                correctOrientation: true,
                destinationType: Camera.DestinationType.FILE_URI
            });

            function onCameraSuccess(imageUri) {
                app.log('onCameraSuccess: ' + imageUri);
                callback([imageUri]);
            }
            function onCameraFail(message) {
                app.log('Failed because: ' + message);
                callback([]);
            }
        }

最佳答案

所以...我有点抱歉这么说,但这不是相机插件的问题。

我做了以下事情:

  1. cordova 创建 cameracheck com.example.com cameracheck
  2. cd cameracheck
  3. cordova平台添加ios
  4. cordova 插件添加 cordova-plugin-camera
  5. cordova 插件添加 cordova-plugin-console
  6. Cordova 构建

之后,我在 XCode 中打开应用程序并将代码编辑为标准代码。

<body>
    <div class="app">
        <h1>Apache Cordova</h1>
        <div id="deviceready" class="blink">
            <p class="event listening">Connecting to Device</p>
            <p class="event received" onclick="openCamera()">Device is Ready</p>
        </div>
    </div>
    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
</body>

openCamera() 函数

function openCamera() {
    navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
                                destinationType: Camera.DestinationType.FILE_URI });

    function onSuccess(imageURI) {
        var image = document.getElementById('myImage');
        image.src = imageURI;
    }

    function onFail(message) {
        alert('Failed because: ' + message);
    }
}

我拒绝了相机访问并关闭了应用程序。在我重新打开它并按文本启动相机后,我收到一条消息,直接告诉我,无法访问相机。此外,插件会询问我是要打开设置还是只想关闭相机。请参阅下面的屏幕截图。

问题必须出在代码中的任何地方,或者您可能使用了已弃用的相机插件?您是否尝试更新它?

enter image description here

关于javascript - 如何在调用 camera.getPicture 之前检查相机权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607497/

相关文章:

javascript - 检查单选按钮是否脏/以 react 形式被触摸

ios - addObjectsFromArray 在 Swift 中不可用

ios - 在 ButtonRow 中显示值

ios - 如何缩小 React-Native map

javascript - 如何将文本作为文本文件上传到具有输入类型文件的表单中

javascript - 将处理程序附加到 DocumentSelectionChanged 事件会禁用 Office for Mac 上的撤消堆栈

javascript - 为什么 typeof 不是方法?

java - 无法使用 "&"作为 Android Studio 中按钮的文本属性

android - 多 fragment 最佳实践

android - 通过 Facebook android API 发布表示成功,但在 Facebook 网站上找不到