Android电子邮件用加号(+)替换空格

时间:2012-08-29 06:53:07

标签: android gmail yahoo-mail

我在动作视图中发送电子邮件,它在gmail中运行得非常好,但如果用户选择任何其他邮件服务,则用'+'替换空格

like in body text is "check out it is a good day"

it displays as "check+out+it+is+a+good+day"

任何想法如何解决这个问题

这是我发送电子邮件的功能

private void sendToAFriend() {

    String subject = "it is a good day ";
    String body = "Check out it is a good day";

    String uriText =
        "mailto:" + 
        "?subject=" + URLEncoder.encode(subject) + 
        "&body=" + URLEncoder.encode(body);

    Uri uri = Uri.parse(uriText);

    Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
    sendIntent.setData(uri);
    startActivity(Intent.createChooser(sendIntent, "Send email")); 
}

4 个答案:

答案 0 :(得分:4)

试试这段代码。

Intent intent = new Intent(Intent.ACTION_SENDTO); // it's not ACTION_SEND
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject of email");
intent.putExtra(Intent.EXTRA_TEXT, "Body of email");
intent.setData(Uri.parse("mailto:default@recipient.com")); // or just "mailto:" for blank
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // this will make such that when user returns to your app, your app is displayed, instead of the email app.
startActivity(intent);

答案 1 :(得分:1)

从URLEncoder.encode方法的描述

java.net.URLEncoder.encode(String s) 已过时。请改用encode(String,String)。 使用指定的编码方案enc在x-www-form-urlencoded字符串中对给定字符串s进行编码。

所有字符除了字母('a'..'z','A'..'Z')和数字('0'..'9')和字符'。',' - ','* ','_'被转换为'%'前面的十六进制值。例如:'#' - > %23。 此外,空格由“+”

代替

答案 2 :(得分:0)

使用Uri.encode(String)代替URLEncoder,它为此用例正确处理空格。 如果您希望将发送选项限制为仅限电子邮件,则最好使用带有mailto链接的ACTION_VIEW。

答案 3 :(得分:0)

不使用任何编码即可使用。

“& body =”+ body;

它对我有用!