2016-01-15 42 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'); 
      } 
    }); 
}