he hecho una aplicación con dos botonesuri imagen de la cámara androide que regresan con un fracaso la entrega de resultado ResultInfo
- uno para seleccionar una imagen de la galería
- uno para tomar una nueva imagen con la cámara
El proceso para la galería de selección funciona bien, si tomo una foto con la cámara, sigue recibiendo el error Failure delivering result ResultInfo
. Y parece que la imagen no está escrita en la carpeta.
Dado que ambos devuelven lo mismo, tengo un solo controlador para hacer frente al resultado;
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK && data.getData() != null){
try {
Log.i("YADDA",data.getData().toString());
Uri targetUri = data.getData();
if (targetUri != null) {
//Log.i("YADDA",targetUri.toString());
myImage nsi = new myImage();
nsi.ThumbNail = getThumbnail(targetUri);
nsi.path = targetUri;
nsi.FileName = FileNameBase + "_" + String.valueOf(1 + photos.size());
photos.add(nsi);
}
} catch (IOException e) {
e.printStackTrace();
}
DrawImageGallery();
}
}
The Button handlers;
nsbu1.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v){
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);
}
});
nsbu2.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v){
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
// Uri myuri=Uri.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath(), FileNameBase + ".jpg"));
Uri myuri=Uri.fromFile(new File("/mnt/sdcard/tmp/" + FileNameBase + ".jpg"));
Log.i("YADDA", myuri.toString());
intent.putExtra(MediaStore.EXTRA_OUTPUT, myuri);
startActivityForResult(cameraIntent, 1);
}
});
cosas que intenté:
- He comprobado el doble, que se manifiesta por permisos de escritura en la tarjeta SD cosa extraña
- es, el controlador debe ser correcta, ya que una imagen de las obras galería bien
- Algunas versiones de Android tienen un error con este controlador de cámara, pero he comprobado, mi Nexus S no es uno de ellos.
- googled/depurado por horas y horas
salida Logcat;
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): FATAL EXCEPTION: main
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.android.spot/com.android.spot.newsite}: java.lang.NullPointerException
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2574)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.app.ActivityThread.access$2000(ActivityThread.java:117)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.os.Handler.dispatchMessage(Handler.java:99)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.os.Looper.loop(Looper.java:130)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at java.lang.reflect.Method.invokeNative(Native Method)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at java.lang.reflect.Method.invoke(Method.java:507)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at dalvik.system.NativeStart.main(Native Method)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): Caused by: java.lang.NullPointerException
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at com.android.spot.newsite.onActivityResult(newsite.java:351)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.app.Activity.dispatchActivityResult(Activity.java:3908)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): at android.app.ActivityThread.deliverResults(ActivityThread.java:2528)
09-01 10:02:59.085: ERROR/AndroidRuntime(1898): ... 11 more
http://www.softwarepassion.com/android-series-taking-photos-with-andorid-built-in-camera/ –
Gracias por su sugerencia, lo he intentado, sin resultado, el mismo error. Thnx de todos modos! – Lectere
¿Puedes publicar el logcat donde están los errores? –