Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android camera : Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity

i've really frustased to solve my problem, i have an application that using camera, when camera capture a photo, it will display on activity, when i'm not using cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mPhotoUri); photo will display on activity, but the name and path file is not like what i wanted. i'm using galaxy tab for compiling it, i have follow tutorial to solve my problem from here , here and here but my application still force close and eror, this is my code :

{     File sdCard = Environment.getExternalStorageDirectory();     File path = new File (sdCard.getAbsolutePath() + "/android/data/spaj_foto");     path.mkdir();     File file = new File (path,"spaj_foto.png");     String filePath ="/android/data/spaj_foto/spaj_foto.png";      try {         file.createNewFile();     } catch (IOException e) {}              mPhotoUri = Uri.fromFile(file);      values.put(MediaStore.Images.ImageColumns.DATA, file.getPath());     mPhotoUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);      Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);      cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mPhotoUri);     startActivityForResult(cameraIntent,TAKE_PHOTO_CODE );    } 

activityresult method :

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {       if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {         Bitmap photo = (Bitmap) data.getExtras().get("data");          image_spaj.setImageBitmap(photo);           // CALL THIS METHOD TO GET THE URI FROM THE BITMAP         Uri tempUri = getImageUri(getApplicationContext(), photo);          // CALL THIS METHOD TO GET THE ACTUAL PATH         File finalFile = new File(getRealPathFromURI(tempUri));  //              System.out.println(mImageCaptureUri);     }   } public String getRealPathFromURI(Uri mPhotoUri) {     Cursor cursor = getContentResolver().query(mPhotoUri, null, null, null, null);      cursor.moveToFirst();      int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);      return cursor.getString(idx);  }  public Uri getImageUri(Context inContext, Bitmap inImage) {     ByteArrayOutputStream bytes = new ByteArrayOutputStream();     inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);     String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);     return Uri.parse(path); } 

this is my logcat says:

    09-27 10:59:43.186: E/AndroidRuntime(31318): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity {org.example.touch/org.example.touch.FormSpaj}: java.lang.NullPointerException 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3179) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3222) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.access$1100(ActivityThread.java:140) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.os.Handler.dispatchMessage(Handler.java:99) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.os.Looper.loop(Looper.java:137) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.main(ActivityThread.java:4895) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at java.lang.reflect.Method.invokeNative(Native Method) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at java.lang.reflect.Method.invoke(Method.java:511) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at dalvik.system.NativeStart.main(Native Method) 09-27 10:59:43.186: E/AndroidRuntime(31318): Caused by: java.lang.NullPointerException 09-27 10:59:43.186: E/AndroidRuntime(31318):    at org.example.touch.FormSpaj.onActivityResult(FormSpaj.java:993) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.Activity.dispatchActivityResult(Activity.java:5347) 09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3175) 09-27 10:59:43.186: E/AndroidRuntime(31318):    ... 11 more 

i really hope someone can help me to solve my problem, i already stack and can't thinking anyway again, please someone help me... thank you.

like image 212
Aoyama Nanami Avatar asked Sep 27 '13 04:09

Aoyama Nanami


1 Answers

Make sure you have both Camera Permission and READ/WRITE External Storage Permissions.

Try this is working like charm with me

private String selectedImagePath = "";     final private int PICK_IMAGE = 1;     final private int CAPTURE_IMAGE = 2;  public Uri setImageUri() {         // Store image in dcim         File file = new File(Environment.getExternalStorageDirectory() + "/DCIM/", "image" + new Date().getTime() + ".png");         Uri imgUri = Uri.fromFile(file);         this.imgPath = file.getAbsolutePath();         return imgUri;     }       public String getImagePath() {         return imgPath;     }  btnGallery.setOnClickListener(new OnClickListener() {              @Override             public void onClick(View v) {                 Intent intent = new Intent();                 intent.setType("image/*");                 intent.setAction(Intent.ACTION_GET_CONTENT);                 startActivityForResult(Intent.createChooser(intent, ""), PICK_IMAGE);              }         });          btnCapture.setOnClickListener(new OnClickListener() {              @Override             public void onClick(View v) {                 final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                 intent.putExtra(MediaStore.EXTRA_OUTPUT, setImageUri());                 startActivityForResult(intent, CAPTURE_IMAGE);             }         });  @Override     protected void onActivityResult(int requestCode, int resultCode, Intent data) {         if (resultCode != Activity.RESULT_CANCELED) {             if (requestCode == PICK_IMAGE) {                 selectedImagePath = getAbsolutePath(data.getData());                 imgUser.setImageBitmap(decodeFile(selectedImagePath));             } else if (requestCode == CAPTURE_IMAGE) {                 selectedImagePath = getImagePath();                 imgUser.setImageBitmap(decodeFile(selectedImagePath));             } else {                 super.onActivityResult(requestCode, resultCode, data);             }         }      }   public Bitmap decodeFile(String path) {         try {             // Decode image size             BitmapFactory.Options o = new BitmapFactory.Options();             o.inJustDecodeBounds = true;             BitmapFactory.decodeFile(path, o);             // The new size we want to scale to             final int REQUIRED_SIZE = 70;              // Find the correct scale value. It should be the power of 2.             int scale = 1;             while (o.outWidth / scale / 2 >= REQUIRED_SIZE && o.outHeight / scale / 2 >= REQUIRED_SIZE)                 scale *= 2;              // Decode with inSampleSize             BitmapFactory.Options o2 = new BitmapFactory.Options();             o2.inSampleSize = scale;             return BitmapFactory.decodeFile(path, o2);         } catch (Throwable e) {             e.printStackTrace();         }         return null;      }  public String getAbsolutePath(Uri uri) {         String[] projection = { MediaColumns.DATA };         @SuppressWarnings("deprecation")         Cursor cursor = managedQuery(uri, projection, null, null, null);         if (cursor != null) {             int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);             cursor.moveToFirst();             return cursor.getString(column_index);         } else             return null;     } 
like image 159
Biraj Zalavadia Avatar answered Oct 06 '22 01:10

Biraj Zalavadia