Cómo forzar el permiso "android.permission.CAMERA" que se agrega a manifest en Codename one

Estoy tratando de mostrar una vista previa en vivo de la cámara de revestimiento trasero en Codename One. Yo uso para que la interfaz nativa (estoy apuntando Android primero).

Para permitir que mi aplicación utilice la cámara sin estropear con sugerencias de construcción, agregué estas líneas en mi formulario principal:

if (Capture.hasCamera()){ Dialog.show("Appareil photo détecté", "Votre matériel est bien équipé d'un appareil photo!", "OK", null); } 

Lo hice porque el blog de Codename One declaró

Android.hardware.camera & android.permission.RECORD_AUDIO – son activados por com.codename1.Capture

Sin embargo, mientras que la depuración de la aplicación con las fuentes que tengo de CN1 en Android Studio en un dispositivo real (API NIVEL 19 aka Kit Kat) Siempre tengo una java.lang.RuntimeException: Fail to connect to camera service .

Después de un tiempo me di cuenta de que la excepción se debía a la falta del siguiente permiso en manifest.xml:

<uses-permission android:name="android.permission.CAMERA" android:required="false"/>

Tenga en cuenta que, como se indica en el blog de CN1, la línea <uses-feature android:name="android.hardware.camera" android:required="false" /> ya fue añadido por CN1.

Ahora que he añadido esta línea, la previsualización en vivo se muestra bien.

¿Por qué este permiso no se agrega automáticamente en el manifiesto, debo añadirlo a la sugerencia de construcción?

Además tengo otro proyecto que utiliza la cámara para tomar fotos y guardarlas en el teléfono y el permiso de cámara no se muestra (en las aplicaciones de Android Info) ni solicitado durante la instalación de la aplicación, mientras que funciona perfectamente bien. Tenga en cuenta que, por ejemplo, Twitter App muestra "Tomar fotos y grabar videos" en los permisos de la aplicación, por lo que no parece ser un problema con mi teléfono ocultando permiso de cámara.

EDIT 20 de noviembre de 2016:

De hecho, la guía del desarrollador de Android afirma que

Nota: Si está utilizando la cámara invocando una aplicación de cámara existente, su aplicación no necesita solicitar este permiso.

¡Por eso CN1 no requiere este permiso!

Gracias por ayudarme a obtener la gestión de permisos con CN1.

Debe agregar la siguiente sugerencia de construcción:

 android.xpermissions=<uses-permission android:name="android.permission.CAMERA" android:required="false"/> 

También puede agregar esto al cn1lib para que se inyecte automáticamente.

En el pasado, agrega el permiso que desea a su manifiesto y, a continuación, se solicita cuando el usuario intenta instalar su aplicación. A partir de Android 6.0 o superior, esto ha cambiado. Ahora solo puede solicitar un permiso cuando su aplicación lo necesite por primera vez. Después de que el usuario le conceda permiso, no tendrá que volver a preguntar la próxima vez. Algunos de los beneficios de esto incluyen mantener al usuario al tanto de por qué necesita permisos específicos y no solicitar permisos que realmente no necesita.

Puede leer más acerca de cómo implementarlo aquí: https://developer.android.com/training/permissions/requesting.html

No hay manera de utilizar una cámara de teléfonos sin pedir permiso en algún momento.

  • OnCreate () se llama cuando se vuelve a abrir desde una tarea reciente después de cambiar la configuración del permiso
  • Marshmallow FINE y COARSE permiso de ubicación
  • Android Studio v1.3 Comprobación del uso de permisos no verificados
  • Android Añadir <uses-feature> en Manifest
  • ¿Por qué se ha agregado el permiso READ_PHONE_STATE?
  • Java.lang.RuntimeException: inicio fallido
  • Android Marshmallow - cambio de estado de permisos
  • Marsmallow: Cambiar permisos en tiempo de ejecución bloquea la aplicación
  • ¿Es necesaria la solicitud de acceso a Internet en tiempo de ejecución (Android)?
  • Android Marshmallow Callback cuando el usuario revoca los permisos de la configuración?
  • ¿Cómo UID de una aplicación determinada durante la instalación en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.