Как использовать щелкнутую картинку в новом действии?

Я хочу использовать камеру телефона Android, чтобы щелкнуть картинку, а затем использовать ее в другом действии. Я не смог найти какой-либо точный метод, поэтому я попытался получить путь к изображению, где он сохранен, а затем использовать его в другом действии.

private OnClickListener cameraBclicked = new OnClickListener() {
    public void onClick(View v) {

        Intent m_Intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(m_Intent, TAKE_PICTURE);
    }
};

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data){

    if ( requestCode == TAKE_PICTURE)
    {
        Uri selectedImage = data.getData();
        Intent intent1 = new Intent(picsource.this,NewScreen.class);
        intent1.putExtra("path", selectedImage);
        startActivity(intent1);
    }

Теперь проблема заключается в том, что uri выходит за нуль.. пожалуйста, исправьте приведенный выше код.

Ответ 1

Чтобы начать работу с камерой, вы можете использовать следующий код

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

После захвата изображения вы получите захваченное изображение в формате растрового изображения в методе onActivityResult. Теперь, когда вы получаете растровое изображение, напишите растровое изображение во внешнем хранилище и пройдите путь к изображению, чтобы выполнить операцию, в которой вы хотите пройти. Из второго действия вы можете открыть файл и получить изображение.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
   if (requestCode == 1) {  
        Bitmap bmp = intent.getExtras().get("data");
        ByteArrayOutputStream stream = new ByteArrayOutputStream();

         bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
         byte[] byteArray = stream.toByteArray(); // convert camera photo to byte array

         // save it in your external storage.
        FileOutputStream fo = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/_camera.png"));

        fo.write(byteArray);
        fo.flush();
        fo.close();
   }  
} 

Ответ 2

У меня уже была эта проблема, Здесь моя ошибка кода

Bitmap photo = (Bitmap) data.getData();// This code return null

Моя проблема была решена путем изменения кода

Bitmap photo = (Bitmap) data.getExtras().get("data");