2016-01-15 62 views
1

我无法使用Ti.MEDIA.ShowCamera(...)在Android 6.0中使用Appcelerator调用相机。我正在为Android和iOS做一个基本的概念验证应用程序。它可以在iOS和Android 4,5和5.1上正常工作。我正在使用最新的Appcelerator SDK:5.1.2.GA,并在运行6.0.0的实际Nexus 6上以及运行6.0.0的Genymotion Nexus 6 Emulator上进行了测试。Ti.MEDIA.ShowCamera不在Android OS上显示相机6

回答

2

嗯,我认为你已经被Android 6.0的新权限所击中。你可以看到更多的Titanium 5.1.0 sample app - 特别是在permissions.js file

与这个自己此刻的挣扎:-)

编辑:

我一直无法使用任何模拟器(Genymotion或Android模拟器随Android Studio 2.0测试版一起提供)可以正确使用Android 6.0的新权限等。我只好买了设备的一天 - 现在我已经固定,在我的应用程序测试的问题:-)

我没有用几天的时间来尝试并使用仿真得到一个体面的测试环境。但很显然,这一切是一个小的Android 6.0太早:-(

/约翰

+0

感谢@JohnDalsgaard,我实施了一些权限检查,确实可以授予权限并显示相机,但由于某种原因未保存它。 –

0

如果您不需要任何SDK 5.1的功能,你可以回到5.0.2左右。然后你不需要新的Android 6权限

我已经在Android 6(CyanogenMod)的Nexus 4上使用了新的权限,并且在允许后再次询问权限时我总是得到错误信息。 Ti SDK解决了这个问题

+0

我尝试了你的建议,实际上回滚到了5.0.3。它在运行Android 6的Genymotion Nexus 6仿真器上按预期工作(显示相机并保存到设备),但在实际的Android设备上有不同的结果。出于某种原因,在运行Android 6的真正Nexus 6上,它会调用标有** Camera **和操作按钮的微小模式警报。在运行Android 5.1的Moto X上,它成功显示相机,似乎拍摄了照片,但不保存到设备中。这是最令人沮丧的,任何人有任何想法?当然,它适用于iOS设备:/ –

2

从android 5.4开始,android在运行时请求这些权限,所以你首先需要询问用户许可。如果他授予许可,则唯一的相机将可用。 您可以使用下面的代码。

if (Ti.Media.hasCameraPermissions()) { 
        logicToShowCamera(e);//Write showCamera related logic here.... 
}else{ 
    Ti.Media.requestCameraPermissions(function(obj) { 
    if (obj.success) { 
      logicToShowCamera(e); 
    } else { 
      alert('Please Provide permission first'); 
      } 
    }); 
}