2013-03-28 9 views
0

У меня есть андроид приложение, запустить смартфон камерыAndroid intent.getData() NullPointer exceptipon

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

Для отображения сфотографировались я использую этот кусок кода,

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    setImage=true; 
    if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) { 
     if(data!=null) 
     { 
      ImageView image = (ImageView) findViewById(R.id.imagePreview); 
      Bundle extras = data.getExtras(); 
      Bitmap mImageBitmap = (Bitmap) extras.get("data"); 
      image.setImageBitmap(mImageBitmap); 
     } 
    } 
} 

Это работает довольно отлично, но если я хочу получить путь к снимку, я должен использовать (intent)data.getData(), но это возвращает значение null. что я должен сделать, чтобы решить эту проблему?

+0

есть у попытался его как 'Bitmap mImageBitmap = (Bitmap) data.getExtras() получить ("данные");' –

+0

возможного дубликат [Как получить путь изображений только захваченный из камеры] (HTTP: //stackoverflow.com/questions/11591825/how-to-get-image-path-just-captured-from-camera) – waqaslam

+0

, но мне нужен путь, а не растровое изображение ..... у меня уже есть правильный растровый объект. ... – Dennis

ответ

0

Попробуйте, как показано ниже:

 Bitmap m_photo = (Bitmap) p_data.getExtras().get("data"); 
    if (m_photo != null) 
    { 
    ByteArrayOutputStream m_upByteArrayOutputStream = new ByteArrayOutputStream(); 
    m_photo.compress(Bitmap.CompressFormat.PNG, 40, m_upByteArrayOutputStream); 
    Drawable m_imageFromCamera = new BitmapDrawable(m_photo); 
      image.setBackgroundDrawable(m_photo); 
     } 

Редакцией:

Чтобы получить Путь изображения попробовать ниже код:

 Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 
     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String imagePath = cursor.getString(columnIndex); <---- Here is your image path. 
     cursor.close(); 
+0

, но мне нужен только путь к картинке – Dennis

+0

Проверьте мой отредактированный ответ. – GrIsHu

0

Попробуйте эту надежду, это поможет вам. .

Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      cursor.close(); 

      String imageName = picturePath.substring(picturePath.lastIndexOf(
        "/", picturePath.length()));