La aplicación Phonegap se cierra después de que la cámara capture la imagen.

Estoy recibiendo un error con Phonegap 1.4.1.

La aplicación de phonegap que creo se reinicia después de que regrese a la aplicación después de tomar una foto.

Aquí está el código que estoy usando:

function capturePhoto() { // Take picture using device camera and retrieve image as base64-encoded string navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.FILE_URI }); } function onPhotoURISuccess(imageURI) { // Uncomment to view the image file URI // console.log(imageURI); // Get image handle // var largeImage = document.getElementById('largeImage'); // Unhide image elements // largeImage.style.display = 'block'; // Show the captured photo // The inline CSS rules are used to resize the image // largeImage.src = imageURI; } 

Yo estaba teniendo el mismo problema durante 2 días hasta que la fuente que debe tener acceso al permiso de obtener el archivo de imagen que tomó en el dispositivo. Por defecto no hay permiso de devolver la imagen por lo que devuelve null y su aplicación se bloquea.

Si está utilizando Cordova / PhoneGap en XCode, también debe crear el archivo Config.xml en la carpeta www y dar permiso para acceder al archivo de imagen.

 <feature name="http://api.phonegap.com/1.0/device" /> <feature name="http://api.phonegap.com/1.0/battery"/> <feature name="http://api.phonegap.com/1.0/camera"/> <feature name="http://api.phonegap.com/1.0/contacts"/> <feature name="http://api.phonegap.com/1.0/file"/> <feature name="http://api.phonegap.com/1.0/geolocation"/> <feature name="http://api.phonegap.com/1.0/media"/> <feature name="http://api.phonegap.com/1.0/network"/> <feature name="http://api.phonegap.com/1.0/notification"/> 

Si está trabajando en Android, dé permiso en el archivo AndroidManifest.xml.

Puede encontrar todo para el archivo config.xml aquí: https://build.phonegap.com/docs/config-xml

Utilizar foreground-camera-plugin su voluntad de arreglar este problema:

https://code.google.com/p/foreground-camera-plugin/

Puede ser su memoria móvil no es suficiente, Este problema no es en realidad Phonegap. Es un problema común en las aplicaciones androides nativas también. Se produce porque cuando se dispara la cámara, la actividad de androide va de fondo (estado onStop), esperando a que la cámara tome la fotografía. Entonces el GC viene y mata la actividad para liberar memoria antes de la conclusión de la acción de la cámara, y cuando la cámara está terminada tu actividad ya ha muerto. Es por eso que la aplicación se reinicia.

Aquí está mi sugiere

1. Cambiar el plugin cramer, evitar el uso de plug-ins personalizados iniciar la recolección de basura, ( http://code.google.com/p/foreground-camera-plugin/ , http://code.google.com/p/foreground- Galería- plugin /) 2. Detecta la memoria si es insuficiente para matar otros procesos, la memoria de liberación activa 3. Mejorar su supervivencia, tratar de evitar la liberación de memoria en el sistema seleccionado.

  private void clearMemory(boolean killAll) { mklog("当前系统可用内存大小是:" + getAvailMemory(getApplicationContext())); ActivityManager activityManger = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> list = activityManger .getRunningAppProcesses(); if (list != null) for (int i = 0; i < list.size(); i++) { ActivityManager.RunningAppProcessInfo apinfo = list.get(i); System.out.println("pid " + apinfo.pid); System.out.println("processName " + apinfo.processName); System.out .println("importance " + apinfo.importance); String[] pkgList = apinfo.pkgList; if (apinfo.importance >= ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND || (killAll && apinfo.importance >= ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE)) { // Process.killProcess(apinfo.pid); for (int j = 0; j < pkgList.length; j++) { activityManger.killBackgroundProcesses(pkgList[j]); mklog("准备杀死进程:" + pkgList[j]); } } } mklog("清理之后 当前系统可用内存大小是:" + getAvailMemory(getApplicationContext())); } private long getAvailMemory(Context context) { ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); MemoryInfo mi = new MemoryInfo(); am.getMemoryInfo(mi); return mi.availMem / (1024 * 1024); } public void mklog(String contentString) { Log.i("Web Console", contentString); } 

Asegúrese de que su etiqueta de actividad en AndroidManifest.xml tiene el siguiente atributo:

 android:configChanges="orientation|keyboardHidden" 

El cambio de orientación hará que la aplicación se vuelva a cargar. Si realmente está recibiendo un error, ejecute "adb logcat" para capturar el error que está ocurriendo.

Este problema no es en realidad Phonegap. Es un problema común en aplicaciones nativas de Android también.

Ver la cámara de PhoneGap reinicia la aplicación

Bajar a 25 y usar <preference name="android-minSdkVersion" value="7" /> me ayudó!

Para mí, el truco era modificar el manifiesto de:

 <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="14"/> 

a

 <uses-sdk android:minSdkVersion="7" /> 

Ahora funciona, pero no tengo ni idea de por qué …

Tengo una nota de Samsung Galaxy II. Yo tuve el mismo problema. He cambiado esto en el AndroidManifest.xml y ahora funciona en Samsung y HTC Thunderbolt

 <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10"/> <activity android:configChanges="orientation|keyboardHidden" /> 

DATA_URI no se recomienda a veces, no vuelve a la aplicación. Porque DATA_URI da cadena base64, por lo que algunos dispositivos no tienen suficiente memoria para esto. Utilice FILE_URI solamente, es seguro para el dispositivo android.

Si usted necesita la cadena de Base64 significa que encubierto después de la captura de llamadaSucceso usando Archivo readAsDataURL

Ref este enlace

Intente bajar el parámetro de calidad a 25. Algunos dispositivos no tienen suficiente memoria para 50.

  • PhoneGap en Android no cargará scripts externos
  • Ionic Cordova FileUpload error: No se permite cargar el recurso local
  • RequestFileSystem en Cordova 3.4 falla con error "Clase no encontrada"
  • Personalizar Android Phonegap "Página web no disponible" cuando el servidor está inactivo
  • ¿Cómo puedo usar la API de conexión de Facebook de mobileweb con el teléfono?
  • Aplicación Phonegap para Android sin Phonegap Build
  • Uso de JWplayer en Android para reproducir video en Phonegap
  • Edificio con cordova para android crea código de la versión incorrecta
  • ¿Cómo forzar PhoneGap Android aplicación para realizar la actualización automática?
  • ¿Cómo leer los códigos de barras usando Android Phonegap?
  • Phonegap / Cordova pausa evento desencadenado en el curriculum vitae para Android; No puede desactivar el audio como resultado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.