1

我在操作视图中发送电子邮件,它在 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

4 回答 4

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);
于 2012-08-29T06:56:25.333 回答
1

从方法 URLEncoder.encode 的描述

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

除字母 ('a'..'z', 'A'..'Z') 和数字 ('0'..'9') 和字符 '.', '-', '*', ' 之外的所有字符_' 被转换成以 '%' 开头的十六进制值。例如:'#' -> %23。另外,空格用'+'代替

于 2012-08-29T06:58:22.803 回答
0

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

于 2013-07-26T11:45:20.913 回答
0

无需任何编码即可使用。

"&body=" + 正文;

这个对我有用!

于 2013-09-24T12:42:44.960 回答