如何使用Intent拍照并通过电子邮件发送

时间:2015-04-17 06:25:14

标签: java android

任何帮助,我将被挪用的想法。 大家好,很抱歉这几天问了很多问题。 我设计了简单的Android应用程序,使用相机并显示图片是在布局上拍摄的。看附图。 enter image description here

一旦我点击“打开相机”按钮,它将弹出相机,询问用户按下相机按钮拍摄或拍照。我需要的是,一旦相机打开,它应该自己拍照,不用相机按钮,Idn是否可能。

enter image description here

如图所示的下一个问题,如果用户喜欢,则需要用户干预才能按OK。在这一步中,我需要拍摄一张照片,一旦拍摄,应该回到主要活动。并将图片存储在图像视图中。 enter image description here

最后一个请求或想法的人如何将此图片发送给用户的电子邮件干扰。 这是代码-----------------------------------

public class MainActivity extends Activity {
    ImageView viewpict;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewpict=(ImageView) findViewById(R.id.pict_result);
        Button btn= (Button)findViewById(R.id.camera);

        btn.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent (android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            //  Intent intent = new Intent (getApplicationContext(),MainActivity2.class);

                //startActivity(intent);
                startActivityForResult(intent,0);

            }

     });


    }

protected void onActivityResult( int requestCode, int resultCode,Intent data)
{
    if (requestCode==0)
    {
        Bitmap theimage = (Bitmap) data.getExtras().get("data");
        viewpict.setImageBitmap(theimage);
    }

}

}

4 个答案:

答案 0 :(得分:2)

首先,您必须将该位图保存到SD卡,然后才能将该图像附加到电子邮件中。

将位图保存到sdcard是

FileOutputStream out = null;
 try {
out = new FileOutputStream(filename);
bmp.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap    instance
// PNG is a lossless format, the compression factor (100) is ignored
} catch (Exception e) {
e.printStackTrace();
} 
   try {
    if (out != null) {
        out.close();
    }
} catch (IOException e) {
    e.printStackTrace();

}

然后您可以阅读该图片并附加到电子邮件

请查看此链接How to attach Bitmap to email android

答案 1 :(得分:1)

通过邮件发送图片, 你可以用这个:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("application/image");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, "Test Email"); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Test Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "From My App"); 
emailIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file:///mnt/sdcard/Myimage.jpeg"));
startActivity(Intent.createChooser(emailIntent, "Send mail..."));

答案 2 :(得分:1)

在你的onActivityResult方法中,你应该打开一个新的Activity来查看图像预览,一个带有带有imageview,ok和cancel按钮的xml。

将您的位图发送到此活动并将其放入其imageview中 - 预览活动可以具有静态位图ImagePreview属性。

按下确定后,您应该将图像保存到SD卡,然后发送电子邮件,如@Moubeen所述。

答案 3 :(得分:1)

您可以将位图转换为外部存储空间中的PNG。

File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File imageFile = new File(path, getCurrentTime()+ ".png");
FileOutputStream fileOutPutStream = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 80, fileOutPutStream);

fileOutPutStream.flush();
fileOutPutStream.close();  

然后,您将通过url.Parse()获取URI。你可以分享。

Uri.parse("file://" + imageFile.getAbsolutePath());  


Intent intent= new Intent(android.content.Intent.ACTION_SEND); 
intent.setType("application/image");
intent.putExtra(android.content.Intent.EXTRA_EMAIL, "Email"); 
intent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Your Subject"); 
intent.putExtra(android.content.Intent.EXTRA_TEXT, "Text"); 
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + imageFile.getAbsolutePath()));
startActivity(Intent.createChooser(intent, "mail sending"));