Android 6.0 RuntimeException: No se puede conectar al servicio de cámara

Se ha producido un error con mi aplicación que se ejecutó en Nexus5 (Android6.0).

El error fue

Java.lang.RuntimeException: No se puede conectar al servicio de cámara

Había añadido el permiso a AndroidManifest.xml.

Pero la aplicación está bien con otro teléfono (Android5.1), y genymotion AVD (Android 4.0).

El código de clave está abajo

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

Escriba en su gradle.build targetSdkVersion 22. Es una solución temporal, pero el trabajo.

Abra Configuración -> Aplicaciones -> haga clic en su aplicación -> Permisos -> abra los permisos de la cámara.
Usted puede ver: http://developer.android.com/training/permissions/requesting.html

Esto sucede porque, en Android 6.0, el modelo de permiso es diferente. Debe implementar el nuevo modelo de permiso que solicita el permiso en tiempo de ejecución. Incluso si no lo pides, puedes habilitarlo manualmente en la configuración de la aplicación del teléfono, pero eso no funcionará correctamente cuando publiques tu aplicación en la tienda de reproducción. Aquí hay un artículo sobre cómo obtener permisos de tiempo de ejecución

También puede comprobar la respuesta de Nick aquí para obtener varios permisos

Desde android 6.0 puedes manejar el tiempo de permiso de la aplicación que darás o no permiso específico para una aplicación. En su caso, si no activó el permiso de cámara para su aplicación, es posible que surjan estos problemas.

Por lo tanto, debe habilitar el permiso de settings->apps->your_app->enable camera permission.

Añadir permiso de cámara antes de abrir la cámara:

Siga el enlace para agregar permisos: https://developer.android.com/training/permissions/requesting.html

  • LargeHeap = true manifesto etiqueta no funciona?
  • Cómo usar NodeJS en Android usando J2V8
  • ¿Cómo puedo agregar métodos que utilizo a menudo para Android Studio?
  • Android ejecutando una instrucción if aunque no debería ejecutar nunca?
  • ¿Cómo se implementa el cursor de la base de datos de Android en los detalles?
  • pasar 2 valores de una a otra actividad
  • ¿Cómo obtengo una vista de imagen para rotar mientras traduce en Android?
  • Cargar, guardar y usar datos de autenticación en la API de Box Android
  • ¿Cuál es la diferencia entre commit () y commitAllowingStateLoss () en Fragments
  • Cómo crear una lista de aplicaciones recientes / en ejecución
  • Silenciar un video en un VideoView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.