是否可以在不使用gmail,hotmail等电子邮件客户端的情况下在Android中发送电子邮件。我可以直接使用Intent类发送电子邮件吗?
现在我正在使用电子邮件应用中构建的模拟器。
另外,如何让用户以简单的方式将文件附加到电子邮件中? 我想使用一个按钮在模拟器上打开包含图像的文件夹,并允许用户选择要附加的文件。
这是我的代码:
public class MainActivity extends ActionBarActivity {
private EditText textEmail;
private EditText textSubject;
private EditText textMessage;
private Button btnSend, btnAttach;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textEmail = (EditText)findViewById(R.id.editText);
textSubject = (EditText)findViewById(R.id.editText2);
textMessage = (EditText)findViewById(R.id.editText3);
btnSend = (Button)findViewById(R.id.button);
btnAttach =(Button)findViewById(R.id.button2);//not implemented yet
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SendEmail();
textEmail.setText("");
textSubject.setText("");
textMessage.setText("");
}
});
}
protected void SendEmail(){
String toEmail = textEmail.getText().toString();
String theSubject = textSubject.getText().toString();
String theMessage = textMessage.getText().toString();
Intent email = new Intent(Intent.ACTION_SEND);
email.setData(Uri.parse("mailto:"));
email.putExtra(Intent.EXTRA_EMAIL,toEmail);
email.putExtra(Intent.EXTRA_SUBJECT,theSubject);
email.putExtra(Intent.EXTRA_TEXT,theMessage);
email.setType("message/rfc822");
// the user can choose the email client
startActivity(Intent.createChooser(email, "Send email"));
}
}
答案 0 :(得分:1)
只有没有Intent类,但是当gmail和hotmail等其他应用专门只发送电子邮件时,为什么要重新发明轮子呢?这些客户端还将处理将文件附加到电子邮件的情况,但如果您希望自己处理并将其与电子邮件意图一起传递,请查看Google's tutorial on sharing files.
答案 1 :(得分:0)
简短回答 - 不。 Intent请求操作系统运行已注册的应用程序。如果您没有电子邮件应用程序,那么根据定义,将无法处理您的意图。
答案 2 :(得分:0)
这是关于此主题的previous discussion。
ehd的答案依赖于第三方java库邮件包装器。如果您不信任该包装器,请考虑将标准Linux邮件实用程序(即sendMail)添加到项目中并创建JNI层以与其进行通信。