2016-05-13 49 views
3

我有點新的android工作室和東西...所以我卡住了。我需要捕捉的圖片,並將其發送到email.`public類MainActivity擴展活動實現OnClickListener {我需要通過郵件從相機發送圖像

EditText editTextEmail, editTextSubject, editTextMessage; 
Button btnSend, btnAttachment; 
String email, subject, message, attachmentFile; 
Uri URI = null; 
private static final int PICK_FROM_GALLERY = 101; 
int columnIndex; 
protected static final int CAMERA_PIC_REQUEST = 0; 
Bitmap thumbnail; 
File pic; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    editTextEmail = (EditText) findViewById(R.id.editTextTo); 
    editTextSubject = (EditText) findViewById(R.id.editTextSubject); 
    editTextMessage = (EditText) findViewById(R.id.editTextMessage); 
    btnAttachment = (Button) findViewById(R.id.buttonAttachment); 
    btnSend = (Button) findViewById(R.id.buttonSend); 

    btnSend.setOnClickListener(this); 
    btnAttachment.setOnClickListener(this); 
} 





@Override 
public void onClick(View v) { 

    if (v == btnAttachment) { 
     openGallery(); 

    } 
    if (v == btnSend) { 
     try { 
      email = editTextEmail.getText().toString(); 
      subject = editTextSubject.getText().toString(); 
      message = editTextMessage.getText().toString(); 

      final Intent emailIntent = new Intent (Intent.ACTION_SEND); 
      // emailIntent.setType("message/rfc822"); 
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
        new String[] { email }); 
      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
        subject); 
      if (URI != null) { 
       emailIntent.putExtra(Intent.EXTRA_STREAM, URI.fromFile(pic)); 
      } 

      emailIntent.setType("image/png"); 
      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message); 
      this.startActivity(Intent.createChooser(emailIntent, 
        "Sending email...")); 

     } catch (Throwable t) { 
      Toast.makeText(this, 
        "Request failed try again: " + t.toString(), 
        Toast.LENGTH_LONG).show(); 
     } 
    } 

} 

public void openGallery(){ 
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_PIC_REQUEST) { 
     thumbnail = (Bitmap) data.getExtras().get("data"); 
     ImageView image = (ImageView) findViewById(R.id.imageView1); 
     image.setImageBitmap(thumbnail); 


     try { 
      File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
      if (root.canWrite()){ 
       pic = new File(root, "pic.png"); 
       FileOutputStream out = new FileOutputStream(pic); 
       thumbnail.compress(Bitmap.CompressFormat.PNG, 100, out); 
       out.flush(); 
       out.close(); 
      } 
     } catch (IOException e) { 
      Log.e("BROKEN", "Could not write file " + e.getMessage()); 
     } 

    } 
} 
} 

這是我的代碼,我可以拍張照片吧或沒有圖片發送電子郵件。

P.S.我發現我自己的錯誤。凡在清單文件

+0

您是否收到任何錯誤? –

+0

不,沒有錯誤。我需要以某種方式改變添加照片到附件的方法。 – Manta

+0

[屏幕截圖](https://gyazo.com/e0d55292f42f84c8617316398b27d946)我可以添加圖片,但看起來像這樣。 – Manta

回答

3

使用意圖打電話給你的郵件應用程序,並附加圖片沒有權限:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("application/image"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{strEmail}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Add your Subject Here"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hey, I send you this Image from my Camera App"); 
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("Your ImagePath")); 
startActivity(Intent.createChooser(emailIntent, "Send mail..."));