Android 如何使电子邮件地址可点击?

Android 如何使电子邮件地址可点击?,android,Android,我在我的应用程序中有一些文字说,如果你需要额外的帮助,请给我们发电子邮件,这是电子邮件地址,等等 但我希望他们能够点击电子邮件链接并打开他们的电子邮件客户端。可能吗?还是这种做法不好 如果这是合理的做法,怎么做呢?你需要在你的onClickListener中激发一个意图: Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); // send email as plain text intent.

我在我的应用程序中有一些文字说,如果你需要额外的帮助,请给我们发电子邮件,这是电子邮件地址,等等

但我希望他们能够点击电子邮件链接并打开他们的电子邮件客户端。可能吗?还是这种做法不好


如果这是合理的做法,怎么做呢?

你需要在你的
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, ""));

这是一个非常合理的要求,本课程将把每个电子邮件地址都变成适合你的链接。只需将属性添加到XML中:

<TextView
    ...
    android:autoLink="email" />

您可以在文本上使用setOnClickListener使文本可单击

textView.setOnClickListener(new View.OnClickListener());
您可以通过使用“发送”操作创建新的意图来打开电子邮件客户端。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..."));

接受的答案可能适用于电子邮件,但如果您想检测不同的模式,如电子邮件、联系电话、网络链接,并为这些模式设置单独的点击实现,我建议您使用

使用库的示例代码

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);

请注意从API 24开始出现的一个小错误,如果电子邮件地址的本地部分正好有两个字符,则可接受的解决方案无法工作,如“it@google.com“

见本期:

据称已修复,但显然尚未推出。 (难道你不喜欢他们知道这个问题,甚至懒得相应地更新文档吗?)

因此,除非您确定您没有处理此类两个字母的电子邮件地址,否则您应该暂时使用公认的方法:


请注意从文本视图中删除“自动链接”属性。

最佳解决方案…将自动在您的
文本视图中找到电子邮件地址,因此,如果您愿意,您可以在文本中添加一个段落,它将自动转换所有电子邮件地址。在这种情况下如何删除下划线链接?这并不能回答问题,因为整个
TextView
都是可点击的。只有电子邮件地址应该是链接。