打开在Android Studio中的活动之间传递的照片

时间:2015-11-28 01:42:15

标签: android

我有一个自定义相机应用程序,有两个活动。第一项活动(MainActivity)允许用户使用自定义相机拍摄照片。我想在第二个活动(DrawActivity)中打开这张照片,以便用户最终可以使用它。我的MainActivity效果很好,相机打开,快照并将图像保存到手机外部存储设备。我在DrawActivity打开照片时遇到问题。我通过以下代码将我认为是MainActivityDrawActivivty的图像的Uri传递给我:

Intent myIntent = new Intent(MainActivity.this, DrawActivity.class);
                    myIntent.putExtra("mybitmap",values.toString());
                    startActivity(myIntent);

定义了(在我创建上述意图之前):

FileOutputStream fout = new FileOutputStream(imageFile);
                    fout.write(ostream.toByteArray());
                    fout.close();
                    ContentValues values = new ContentValues();
                    values.put(MediaStore.Images.Media.DATE_TAKEN,
                            System.currentTimeMillis());
                    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
                    values.put(MediaStore.MediaColumns.DATA, imageFile.getAbsolutePath());
                    MainActivity.this.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

我无法让DrawActivity显示照片。我设置了一个Toast消息,只是为了查看我DrawActivity收到的内容,我得到了message。我用这个设置了toast代码:

Bundle extras = getIntent().getExtras();
String imageuri = extras.getString("mybitmap");
Toast.makeText(this, imageuri, Toast.LENGTH_LONG).show();

并尝试将其传递到我的图片视图:

ImageView iv = (ImageView) findViewById(R.id.imageDisplay);
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(imageuri));
            iv.setImageBitmap(bitmap);
            iv.setVisibility(View.VISIBLE);

当我在手机上的照片应用程序中提取照片属性时,图像路径为this。我传递了错误的信息吗?太多的信息?我是否错误地解析了传递的信息?

2 个答案:

答案 0 :(得分:0)

您传递的值不是imageUri,您可以从图像路径中获取位图。因此,仅将文件路径从MainActivity传递到DrawActivity。传递路径后,您可以通过以下代码获取Bitmap

Bitmap bitmap = BitmapFactory.decodeFile(filePath);
mImageView.setImageBitmap(bitmap);

答案 1 :(得分:0)

Rob我建议你使用这种用户友好的架构。因为去另一个活动是好的,但如果你可以在同一个活动中做所有事情,就像我所知,这是一个很好的方法。

enter image description here