1

我的开发环境是mac osx,appcelerator sdk 5.3.0并在Google Nexus Android 6.0上进行测试。即使权限被授予,Ti.Media.showCamera也不会打开相机。这里是我的代码Ti.Media.showCamera即使授予相机权限也不会显示Android 6.0 Titanium

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:试图完成一个输入事件,但 输入事件接收器已经被处置。

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

回答

0

嗨我认为你hasCameraPermissions后失去括号。 hasCameraPermissions()是Ti.Media中定义的方法。 像这样使用: if(hasCameraPermissions()){ //Do you code..... }

+0

谢谢你。现在工作。 –