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) 推奨されていません。代わりに encode(String, String) を使用してください。指定されたエンコーディング スキーム enc を使用して、指定された文字列 s を x-www-form-urlencoded 文字列にエンコードします。

文字 ('a'..'z'、'A'..'Z')、数字 ('0'..'9')、および文字 '.'、'-'、'*'、' を除くすべての文字_ は、先頭に「%」が追加された 16 進数値に変換されます。例: '#' -> %23。さらに、スペースは「+」に置き換えられます

于 2012-08-29T06:58:22.803 に答える