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:
- Dispositivos sin "Aplicaciones que utilizan datos de uso" o android.settings.USAGE_ACCESS_SETTINGS intención
- ¿Debo declarar el permiso "com.android.alarm.permission.SET_ALARM" cuando se utiliza el Administrador de alarmas en Android?
- ¿El aviso de la aplicación de Marshmallow revoca la notificación?
- ¿Necesita V2 Maps Library el permiso ACCESS_NETWORK_STATE?
- Android M detecta si el cuadro de diálogo de permisos está visible
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.
- Permiso de Marshmallow: Componente Lifecycle
- Android marshmallow solicitud de permiso?
- Los teléfonos de Redmi no piden permisos de SMS y por lo tanto no leen sms
- ¿Por qué mi aplicación de mapa se bloquea si configuro maxSdkVersion en el permiso WRITE_EXTERNAL_STORAGE?
- Proporcionar texto personalizado para el diálogo de permisos de Android M
- Mostrar explicación de permiso de forma asincrónica
- La aplicación se bloquea con SecurityException en Android M
- Falso error positivo de permiso de pelusa incluso después de pedir permiso en tiempo de ejecución
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.
- Android Development: Cómo reemplazar parte de un EditText con un Spannable
- El Jar de este archivo de clase blongs al contenedor Android 2.0.1 que no permite modificaciones