android - language - cordova-plugin-device
Cámara de Android Cordova-dando excepción de argumento ilegal (3)
Comencé la programación de Android en cordova hace 2 meses. Todo estaba bien, principalmente la cámara que no funciona ahora. Pero la semana pasada, de alguna manera, se eliminó el directorio de mi proyecto y reinstalé todos los complementos de cordova y el proyecto cumplido, pero ahora muestra su error "excepción de argumento ilegal" en el clic de la cámara. Lo sorprendente es que no cambié una sola línea de código y también funciona correctamente. en otra máquina de desarrollador.
complemento de cordova agregue el comando cordova-plugin-camera utilizado en la instalación del complemento de la cámara.
archivo camera_app.js
var pictureSource; // picture source
var destinationType; // sets the format of returned value
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
pictureSource = navigator.camera.PictureSourceType;
destinationType = navigator.camera.DestinationType;
}
// Called when a photo is successfully retrieved
//
function onPhotoURISuccess(imageURI) {
// largeImage.src = imageURI;
console.log(imageURI);
console.log(document_type);
}
function getPhoto(docType) {
// Retrieve image file location from specified source
document_type = docType
$(''.docError'').hide();
navigator.camera.getPicture(onPhotoURISuccess, onFail, {
quality: 50,
destinationType: destinationType.FILE_URI
});
}
$(''#file1'').click(function() {
console.log(''On camera click'');
getPhoto("addressProof");
});
Traté de depurar el código y finalmente encontré que se debe al proveedor path- java.lang.IllegalArgumentException: faltan los datos de android.support.FILE_PROVIDER_PATHS
pero ya he agregado los metadatos de ruta del proveedor en el archivo xml de Android, ya que se agrega automáticamente al agregar el complemento de cordova.
<provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" />
</provider>
complemento de cordova
cordova-plugin-app-version 0.1.9 "AppVersion" cordova-plugin-camera 2.4.1 "Camera" cordova-plugin-compat 1.1.0 "Compat" cordova-plugin-whitelist 1.3.2 "Whitelist" cordova-sqlite- almacenamiento 1.4.9 "Cordova sqlite storage plugin" ionic-plugin-keyboard 2.2.1 "Keyboard"
plataforma cordova-
Plataformas instaladas: android 6.2.3 Plataformas disponibles: navegador blackberry10 ~ 3.8.0 (en desuso) ~ 4.1.0 webos ~ 3.7.0 windows ~ 5.0.0
NPM version- {npm: ''3.10.3'', ares: ''1.10.1-DEV'', http_parser: ''2.7.0'', icu: ''57 .1 '', módulos:'' 48 '', nodo:'' 6.4.0 '', openssl: ''1.0.2h'', uv: ''1.9.1'', v8: ''5.0.71.60'', zlib: ''1.2.8''}
¡Asegúrese de que su Emulador de dispositivo virtual de Android tenga un conjunto de cámara frontal y posterior ! También tuve el mismo error y eliminar y agregar plataformas no funcionó.
Sidenote: For the Emulator to work, you need to have him already open and then you could run your Debug APK from Android Studio 3.3 or run `ionic cordova run android`.
Lo que funcionó: Abra el Administrador de dispositivos virtuales de Android (Android Studio -> Configurar -> Administrador de AVD)
Acciones -> Editar (icono de lápiz)
Mostrar configuración avanzada
Asegúrate de que agregaste una cámara delantera y trasera! Antes de esta configuración estaba "Ninguno", así que esto no funcionó y obtuve los errores anteriores. Después de agregar la cámara, todo funcionó.
Con suerte, esto ayudará a alguien como yo, que tenía un AVD configurado sin una cámara.
Era muy simple y básico. Simplemente agregue su proveedor de archivos a continuación a su actividad de lanzador de cordova. En mi caso, estaba teniendo alguna actividad personalizada y, por error, el proveedor se agregó al final de toda la actividad y supongo que Córdova no puede leer ese proveedor. datos
Tuve un problema similar hoy. Intenté todo (reinstalar el complemento, reinstalar el complemento desde la fuente, reinstalar la versión anterior del complemento) pero nada pareció ayudar. No sé por qué, pero después de matar el emulador -> cordova clean android -> cordova platform remove android -> cordova platform add android -> cordova build android - conectando mi dispositivo -> cordova run android funciona de nuevo como antes :-) Todavía no sé por qué. Pruébalo bajo tu propio riesgo. Tal vez ayude.