当我点击 Android 中的电子邮件时,主题总是空的
Subject is always empty when I do click on an email in Android
我正在开发一个应用程序,我添加了一个简单的 TextView 和 autoLink="email"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:textSize="16dp"
android:autoLink="email"
android:text="@string/lblContactUs" />
我的字符串如下所示:
<string name="lblContactUs">Federico Navarrete <a href="mailto:fanm_45@outlook.com?Subject=Contact%20Us%TipSal" target="_top">fanm_45@outlook.com</a></string>
总是,当我点击 link 时,主题是空的。
此外,我注意到如果标签中没有真实的电子邮件:
<a href="mailto:fanm_45@outlook.com?Subject=Contact%20Us%TipSal">fanm_45@outlook.com</a>
但是,我有这样的事情:
<a href="mailto:fanm_45@outlook.com?Subject=Contact%20Us%TipSal">Contact us</a>
link 没有做任何事情,代码被完全忽略。有谁知道我应该改变什么?或者为什么不起作用?
PS:
我已经在 Gmail 和 Blue Mail 客户端上测试过,我得到了相同的结果。
我认为textview无法识别这个<a href="mailto:"/>
。但是textView可以识别邮件地址。
您可以将 string.xml 更改为
<string name="lblContactUs">fanm_45@outlook.com</string>
行为应该与
相同
<string name="lblContactUs"><a href="mailto:">fanm_45@outlook.com</a></string>
要达到您的要求,您应该使用客户跨度进行邮件发送。
1.使用 ClickableSpan
设置您的文本可以被点击
class MyURLSpan : ClickableSpan
{
MainActivity mActivity;
public MyURLSpan(MainActivity activity)
{
mActivity = activity;
}
public override void OnClick(View widget)
{
Intent email = new Intent(Intent.ActionSend);
email.SetType("text/plain");
//real device please use email.SetType("message/rfc822");
email.PutExtra(Intent.ExtraEmail, "mikexxma@outlook.com");
email.PutExtra(Intent.ExtraSubject, "hello");
email.PutExtra(Intent.ExtraText, "hello mike ma");
mActivity.StartActivity(email);
}
}
2。给文本添加点击监听:
private SpannableString getClickableSpan()
{
string s = "contact me";
SpannableString sp = new SpannableString(s);
sp.SetSpan(new MyURLSpan(this), 0, s.Length, SpanTypes.InclusiveInclusive);
return sp;
}
3。将跨度设置为 textview
:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
mailTV = (TextView)FindViewById(Resource.Id.textView2);
mailTV.SetText(getClickableSpan(), TextView.BufferType.Spannable);
mailTV.MovementMethod = LinkMovementMethod.Instance;
}
您可以找到:
我正在开发一个应用程序,我添加了一个简单的 TextView 和 autoLink="email"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:textSize="16dp"
android:autoLink="email"
android:text="@string/lblContactUs" />
我的字符串如下所示:
<string name="lblContactUs">Federico Navarrete <a href="mailto:fanm_45@outlook.com?Subject=Contact%20Us%TipSal" target="_top">fanm_45@outlook.com</a></string>
总是,当我点击 link 时,主题是空的。
此外,我注意到如果标签中没有真实的电子邮件:
<a href="mailto:fanm_45@outlook.com?Subject=Contact%20Us%TipSal">fanm_45@outlook.com</a>
但是,我有这样的事情:
<a href="mailto:fanm_45@outlook.com?Subject=Contact%20Us%TipSal">Contact us</a>
link 没有做任何事情,代码被完全忽略。有谁知道我应该改变什么?或者为什么不起作用?
PS: 我已经在 Gmail 和 Blue Mail 客户端上测试过,我得到了相同的结果。
我认为textview无法识别这个<a href="mailto:"/>
。但是textView可以识别邮件地址。
您可以将 string.xml 更改为
<string name="lblContactUs">fanm_45@outlook.com</string>
行为应该与
相同<string name="lblContactUs"><a href="mailto:">fanm_45@outlook.com</a></string>
要达到您的要求,您应该使用客户跨度进行邮件发送。
1.使用 ClickableSpan
class MyURLSpan : ClickableSpan
{
MainActivity mActivity;
public MyURLSpan(MainActivity activity)
{
mActivity = activity;
}
public override void OnClick(View widget)
{
Intent email = new Intent(Intent.ActionSend);
email.SetType("text/plain");
//real device please use email.SetType("message/rfc822");
email.PutExtra(Intent.ExtraEmail, "mikexxma@outlook.com");
email.PutExtra(Intent.ExtraSubject, "hello");
email.PutExtra(Intent.ExtraText, "hello mike ma");
mActivity.StartActivity(email);
}
}
2。给文本添加点击监听:
private SpannableString getClickableSpan()
{
string s = "contact me";
SpannableString sp = new SpannableString(s);
sp.SetSpan(new MyURLSpan(this), 0, s.Length, SpanTypes.InclusiveInclusive);
return sp;
}
3。将跨度设置为 textview
:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
mailTV = (TextView)FindViewById(Resource.Id.textView2);
mailTV.SetText(getClickableSpan(), TextView.BufferType.Spannable);
mailTV.MovementMethod = LinkMovementMethod.Instance;
}
您可以找到: