La actividad de la cámara Android no vuelve a mi aplicación cuando se pulsa el botón OK

Tengo una aplicación que está trabajando plenamente. Sólo tiene un problema con mi objetivo de cámara o permisos.

Se supone que la aplicación inicia la actividad de cámara cuando el usuario presiona un botón. Eso funciona bien, pero cuando el usuario acepta una imagen haciendo clic en el botón Aceptar de la cámara, no vuelve a mi aplicación. Si presionan el botón cancelar en la cámara, vuelve a mi aplicación como se esperaba.

He leído todas las preguntas similares que puedo encontrar aquí, pero ninguna de ellas ha arreglado mi problema. Necesito decirle a la cámara exactamente dónde guardar la imagen porque quiero alternar entre 2 en mi aplicación. Aquí está el código que crea el objetivo de la cámara y lo inicia:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.parse(imagePath)); startActivityForResult(intent, 11); 

He intentado varios valores para imagePath (que es una cadena), pero el botón OK de la cámara no ha funcionado con ninguno de ellos. Estos son los caminos que he probado:

 /mnt/sdcard/<appName>/cameraImages/image1.jpg from Environment.getExternalStorageDirectory() /mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg from context.getExternalCacheDir() /mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg from context.getCacheDir() 

Tengo los permisos siguientes en mi archivo del manifiesto:

 <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.camera.flash" android:required="false" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

¿Pueden ustedes ayudarme a averiguar qué tiene de malo mi código, o decirme qué camino podría ser válido? Prefiero que la imagen se almacene en una ubicación de caché porque no es importante que la imagen continúe existiendo después de que el usuario abandone la aplicación, pero realmente no me importa quién tiene acceso a la imagen.

Estoy haciendo todas las pruebas en el emulador 4.1, compilando con el SDK 4.1, y mi versión mínima es API 8 (2.2).

He puesto un caso para la intención en onActivityResult() , pero no creo que ustedes necesitan ver ese código porque no debería afectar el problema.

Pude resolver el problema. Parece que en lugar de usar Uri.parse(imagePath) , tienes que usar Uri.fromFile(new File(imagePath)) cuando agregas el extra. He puesto el nuevo código de intención abajo en caso de que ayude a alguien con el mismo problema.

 Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(imagePath))); startActivityForResult(intent, 11); 

Ahora context.getExternalCacheDir() para crear la ruta de acceso completa imagePath . La ruta resultante que he creado es /mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg .

El problema es que necesitas compartir tu archivo local (Application's internal) con la actividad de la cámara. Creación de un proveedor de contenido para este efecto es la única cosa que funcionó para mí. Vea la segunda opción aquí: http://dharmendra4android.blogspot.com/2012/04/save-captured-image-to-applications.html

  • (Java LibGDX) ¿Cómo puedo cambiar el tamaño de mis texturas en LibGDX?
  • Android abs con SearchView, onQueryTextListener no funciona
  • Cómo obtener el nombre checo del mes
  • Android: el emulador no puede resolver el nombre de host de la estación de trabajo local
  • ¿Puedo crear aplicaciones de Windows Phone usando java?
  • W / cr_AwContents: onDetachedFromWindow llamado cuando ya está separado. Postergación
  • Permiso de escritura de archivos de Android 6.0 denegado
  • ¿Cuál es el ciclo de vida de una variable pública estática en Android?
  • Cómo resolver StringIndexOutOfBoundsException en android
  • No se puede limpiar el proyecto en Android Studio
  • Seguimiento de FTP subir datos en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.