2015-10-22 3 views
22

Произошла ошибка с моим приложением, которое выполнялось в Nexus5 (Android6.0).Android 6.0 RuntimeException: Не удалось подключиться к службе камеры

Ошибка была

java.lang.RuntimeException: Сбой подключения к службе камеры

Я добавил разрешение на AndroidManifest.xml.

Но приложение в порядке с другим телефоном (Android5.1) и genymotion AVD (Android 4.0).

Ключевой код ниже

@Override 
public void onResume() { 
    super.onResume(); 
    try { 
     mCamera = Camera.open(); 
    }catch (Exception e){ 
     Log.e(TAG,"open camera failed",e); 
    } 

} 
+2

проверить эту http://stackoverflow.com/questions/33030933/android-6-0-open- failed-eacces-permission-denied? rq = 1 –

+0

Пожалуйста, добавьте всю Stacktrace. Я думаю, вы также получили «SecurityException», который является индикатором того, что вы не запрашивали разрешение камеры во время выполнения. – reVerse

ответ

25

Записи в вашем gradle.build targetSdkVersion 22. Это временное решение, но работа.

+1

Просто столкнулся с той же проблемой, и это решило мою проблему, спасибо! – BVB

+0

Это было также решение для меня. Очень странно! Что может быть причиной? –

+0

Очень странно, и это решает. –

8

Это происходит потому, что в Android 6.0 модель разрешения отличается. Вы должны реализовать новую модель разрешения, которая запрашивает разрешение на время выполнения. Даже если вы не спросите об этом, вы можете вручную включить его в настройках приложения телефона, но это не работает, когда вы публикуете свое приложение в магазине воспроизведения. Here является статьей о том, как получить разрешения во время выполнения программы

Также вы можете проверить ответ Ники here для получения множества разрешений

4

С Android 6.0 вы можете справиться с погодой разрешения приложения, которое вы дадите или нет специального разрешения на заявление. В вашем случае, если вы не разрешили разрешение камеры для своего приложения, тогда могут возникнуть проблемы.

Таким образом, вам необходимо включить разрешение от settings->apps->your_app->enable camera.

+0

Вы спасли мой день!Но нам кажется, что мы должны просить разрешения явно как @Amalan Dhananjayan, иначе конечный пользователь не должен знать некоторые сложные вещи, поскольку настройки -> apps-> your_app-> разрешают камеру – Houssem

+1

@Houssem Да, вам нужно обрабатывать это программно. https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en хороший учебник для этого. – 0xalihn

Смежные вопросы