即使相机权限被授予Android 6.0 Titanium

时间:2016-06-08 10:11:34

标签: titanium appcelerator titanium-mobile appcelerator-titanium android-6.0.1-marshmallow

我的开发环境是mac osx,appcelerator sdk 5.3.0和google nexus Android 6.0上的测试。即使授予权限,Ti.Media.showCamera也不会打开相机。这是我的代码

function openCamera(parms) {
    if (Ti.Media.hasCameraPermissions) {
        Ti.API.error("Yes has camera permission");
        Ti.Media.showCamera({
            success : function(event) {
                parms.source.image = newBlob;
            },
            cancel : function() {
                Ti.API.error("User cancelled pictur selection");
            },
            error : function(error) {
                var a = Ti.UI.createAlertDialog({
                    title : 'Camera Error'
                });
                if (error.code == Ti.Media.NO_CAMERA) {
                    a.setMessage("No Camera Found!");
                } else {
                    a.setMessage('Unexpected Error: ' + error.code);
                }
                a.show();
            },
            mediaTypes : [Ti.Media.MEDIA_TYPE_PHOTO],
            animated : true,
            autoHide : true,
            allowEditing : true,
            saveToPhotoGallery : false,
            showControls : true
        });
    } else {
        Ti.API.error("No camera permission. Asking for Permission");
        Ti.Media.requestCameraPermissions(function(e) {
            Ti.API.error(JSON.stringify(e));
            if (e.success === true) {
                openCamera(parms);
            } else {
                alert("Access denied, error: " + e.error);
            }
        });
    }
};

在控制台日志中显示

  

是有相机许可

     

[WARN]:InputEventReceiver:尝试完成输入事件但是   输入事件接收器已经被处理掉了。

有人会指出我在这里出了什么问题。

1 个答案:

答案 0 :(得分:0)

Hiii我认为你在hasCameraPermissions之后缺少括号。 hasCameraPermissions()是在Ti.Media中定义的方法。 像这样使用它: if(hasCameraPermissions()){ //Do you code..... }