如何使用ActivityForResult返回图像?

时间:2015-11-03 08:18:51

标签: java android camera android-camera

在活动B上,选择图像。现在,我希望在单击活动B中的ok button时,图像返回到活动A.

有人可以举例说明如何退回图片吗?还是一个链接?

问候。

活动A

 public void addListenerOnButton() {

        imageButton = (ImageButton) findViewById(R.id.imageButton);

        imageButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Intent i = new Intent(A, B.class);
                startActivityForResult(i, PROJECT_REQUEST_CODE);
            }

        });

    }

 public void onActivityResult(int requestCode,int resultCode, Intent data)
    {
        if(requestCode==PROJECT_REQUEST_CODE) {
            c= data.getStringExtra("text");
            txt1.setText(c); // return text

          //how about image?

        }
        else if (requestCode==CAMERA_REQUEST_CODE)
        {

        }
    }

活动B

   ok.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View arg0)
                {
                   Intent returnIntent=new Intent();
                    text=t.getText().toString();
                    returnIntent.putExtra("text",text);
                    setResult(Activity.RESULT_OK, returnIntent);
                    finish();
                }
            });

        }

          public void selectImage() {

                    final CharSequence[]

 options = { "Take Photo", "Choose from Gallery","Cancel" };
                AlertDialog.Builder builder = new AlertDialog.Builder(ImageFitScreen.this);
                builder.setTitle("Add Photo!");
                builder.setItems(options, new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int item) {

                        if (options[item].equals("Take Photo"))

                        {

                            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                            File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg");


                            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                            //pic = f;

                            startActivityForResult(intent, 1);


                        } else if (options[item].equals("Choose from Gallery"))

                        {

                            Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

                            startActivityForResult(intent, 2);


                        } else if (options[item].equals("Cancel")) {

                            dialog.dismiss();
                            finish();

                        }

                    }

                });

      @Override

        protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            super.onActivityResult(requestCode, resultCode, data);

            if (resultCode == RESULT_OK) {

                if (requestCode == 1) {
                    //h=0;
                    File f = new File(Environment.getExternalStorageDirectory().toString());

                    for (File temp : f.listFiles()) {

                        if (temp.getName().equals("temp.jpg")) {

                            f = temp;
                            File photo = new File(Environment.getExternalStorageDirectory(), "temp.jpg");
                            //pic = photo;
                            break;

                        }

                    }

                    try {

                        Bitmap bitmap;

                        BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();


                        bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(),

                                bitmapOptions);



                        b.setImageBitmap(bitmap);


                        String path = android.os.Environment

                                .getExternalStorageDirectory()

                                + File.separator

                                + "Phoenix" + File.separator + "default";
                        //p = path;

                        f.delete();

                        OutputStream outFile = null;

                        File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");

                        try {

                            outFile = new FileOutputStream(file);

                            bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
                            //pic=file;
                            outFile.flush();

                            outFile.close();


                        } catch (FileNotFoundException e) {

                            e.printStackTrace();

                        } catch (IOException e) {

                            e.printStackTrace();

                        } catch (Exception e) {

                            e.printStackTrace();

                        }

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                } else if (requestCode == 2) {


                    Uri selectedImage = data.getData();
                    // h=1;
                    //imgui = selectedImage;
                    String[] filePath = {MediaStore.Images.Media.DATA};

                    Cursor c = getContentResolver().query(selectedImage, filePath, null, null, null);

                    c.moveToFirst();

                    int columnIndex = c.getColumnIndex(filePath[0]);

                    String picturePath = c.getString(columnIndex);

                    c.close();

                    Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));


                    Log.w("path of image ******", picturePath + "");


                    b.setImageBitmap(thumbnail);

                }

            }
        }

    }

1 个答案:

答案 0 :(得分:0)

您可以在以下活动之间传递Bitmap(在捆绑中):https://stackoverflow.com/a/2459624/2738172

来自ImageView的getBitmap:

ImageView.buildDrawingCache();
Bitmap bmap = ImageView.getDrawingCache();

<强>更新

在你的情况下。 在活动B中:

ok.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View arg0)
            {
                Intent returnIntent=new Intent();
                b.buildDrawingCache();
                returnIntent.putExtra("BitmapImage", b.getDrawingCache());
                setResult(Activity.RESULT_OK, returnIntent);
                finish();
            }
        });
活动A中的

(onActivityResult方法):

if(requestCode==PROJECT_REQUEST_CODE) {
            Bitmap bitmap = (Bitmap) data.getParcelableExtra("BitmapImage");
            imageButton.setImageBitmap(bitmap);

        }