我的申请表中有一些文字说如果你需要额外的帮助,请给我们发电子邮件,这里是电子邮件地址,等等,等等。
但我希望他们能够点击电子邮件链接并打开他们的电子邮件客户端。那可能吗?或者那是不好的做法?
如果是合理的做法,怎么办呢?
答案 0 :(得分:87)
这是一个非常合理的请求,Linkify
课程会将每个电子邮件地址转换为适合您的链接。只需将autoLink
属性添加到XML:
<TextView
...
android:autoLink="email" />
答案 1 :(得分:8)
您可以使用文本
上的setOnClickListener使文本可单击textView.setOnClickListener(new View.OnClickListener());
您可以通过使用ACTION_SEND创建新的Intent来打开电子邮件客户端。 Settype,电子邮件地址和主题如下:
Intent emailintent = new Intent(android.content.Intent.ACTION_SEND);
emailintent.setType("plain/text");
emailintent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] {"mailk@gmail.com" });
emailintent.putExtra(android.content.Intent.EXTRA_SUBJECT, "");
emailintent.putExtra(android.content.Intent.EXTRA_TEXT,"");
startActivity(Intent.createChooser(emailintent, "Send mail..."));
答案 2 :(得分:5)
您需要在onClickListener
:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain"); // send email as plain text
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "some@email.address" });
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.putExtra(Intent.EXTRA_TEXT, "mail body");
startActivity(Intent.createChooser(intent, ""));
答案 3 :(得分:2)
请注意API 24以后的一个小错误,如果电子邮件地址的本地部分恰好包含2个字符,例如“it@google.com”,则会使接受的解决方案失效。
查看问题:https://issuetracker.google.com/issues/64435698
据称已经修好了,但显然还没有推出。 (你不喜欢他们知道这个问题,甚至不愿意相应地更新文档吗?https://developer.android.com/reference/android/widget/TextView.html#attr_android:autoLink)
因此,除非您确定不处理此类双字母电子邮件地址,否则您应该暂时使用此处接受的方法:
TextView to send email when clicked
请注意从TextView中删除自动链接属性。
答案 4 :(得分:0)
接受的答案可能适用于电子邮件,但如果您想检测不同的模式,如电子邮件,联系号码,网络链接,并为这些模式设置单独的点击实施,我建议您使用CustomClickableEmailPhoneTextview
使用该库的示例代码。
CustomPartialyClickableTextview customPartialyClickableTextview= (CustomPartialyClickableTextview) findViewById(R.id.textViewCustom);
/**
* Create Objects For Click Patterns
*/
ClickPattern email=new ClickPattern();
ClickPattern phone=new ClickPattern();
ClickPattern weblink=new ClickPattern();
/**
* set Functionality for what will happen on click of that pattern
* In this example pattern is email
*/
email.setOnClickListener(new ClickPattern.OnClickListener() {
@Override
public void onClick() {
Toast.makeText(MainActivity.this,"email clicked",Toast.LENGTH_LONG).show();
}
});
/**
* set Functionality for what will happen on click of that pattern
* In this example pattern is phone
*/
phone.setOnClickListener(new ClickPattern.OnClickListener() {
@Override
public void onClick() {
Toast.makeText(MainActivity.this,"phone clicked",Toast.LENGTH_LONG).show();
}
});
/**
* set Functionality for what will happen on click of that pattern
* In this example pattern is weblink
*/
weblink.setOnClickListener(new ClickPattern.OnClickListener() {
@Override
public void onClick() {
Toast.makeText(MainActivity.this,"website clicked",Toast.LENGTH_LONG).show();
}
});
/**
* set respective regex string to be used to identify patter
*/
email.setRegex("\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b"); // regex for email
phone.setRegex("[1-9][0-9]{9,14}"); // regex for phone number
weblink.setRegex("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"); // regex for weblink
/**
* add click pattern to the custom textview - first parameter is tag for reference second parameter is ClickPattern object
*/
customPartialyClickableTextview.addClickPattern("email",email);
customPartialyClickableTextview.addClickPattern("phone",phone);
customPartialyClickableTextview.addClickPattern("weblink",weblink);