2

Android アプリから、ユーザーが添付ファイル付きのメールを送信できるようにしようとしています。添付ファイルはプレーン テキスト ファイルです。ユーザーがこのメールを送信するメールアプリのみを選択できるようにしたい。

これは私が使用しているコードです:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_SUBJECT,  "Some awesome email");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Check out the attachment!");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath()));
listActivity.startActivity(Intent.createChooser(emailIntent, "Send email with...");

メール アプリのみが表示されますが、これまでのところ問題ありません。gmail を使用して電子メールを送信すると、電子メールは添付ファイルも含めて正常に届きます。

しかし、k9 メールを使用してメールを送信すると、添付ファイルが base64 でエンコードされてしまいます。だから、基本的には読めません。

私が使うとき

emailIntent.setType("text/plain");

添付ファイルは問題なく (プレーン テキストで) 届きますが、アプリの選択ダイアログにはメール以外のアプリが含まれています。

両方の長所を活かすにはどうすればよいですか? choose-app-dialog の電子メール アプリと、使用されている電子メール クライアントに関係なくプレーン テキストで届くテキスト ファイルの添付ファイルのみですか?

4

1 に答える 1

1

Intent.createChooser()通常の を返しますIntent。返された を変更するだけIntentです。このようなもの:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_SUBJECT,  "Some awesome email");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Check out the attachment!");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath()));
Intent intent = Intent.createChooser(emailIntent, "Send email with...");
intent.setType("text/plain");
listActivity.startActivity(intent);
于 2012-10-09T18:37:35.383 に答える