Я сделал приложение с двумя кнопками
- один, чтобы выбрать изображение из галереи
- один, чтобы сделать новое изображение с камерой
Процесс выбора галереи работает нормально, если я делаю снимок с камеры, он продолжает выдавать ошибку Failure delivering result ResultInfo
. И, похоже, изображение не записывается в папку.
Поскольку оба возвращают одно и то же, у меня есть один обработчик для обработки результата;
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();
}
}
Обработчики кнопок;
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);
}
});
То, что я пытался:
- Я дважды проверил манифест разрешений на запись на SD-карту
- странно, обработчик должен быть правильным, потому что картинка из галереи работает нормально
- В некоторых версиях андроида есть ошибка с этим обработчиком камеры, но я проверю, мой Nexus S не является одним из них.
- гуглил / отлаживал часами
выход 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