web-dev-qa-db-ja.com

Android添付ファイル付きメール送信の意図

可能性のある複製:
内部ストレージからのメール

電子メールは受信者によって受信されていますが、添付ファイルはありません。コードは次のとおりです。専門家ならどこで間違ったのかわかりますか?

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, "body text");
File root = Environment.getExternalStorageDirectory();
File file = new File(root, xmlFilename);
if (!file.exists() || !file.canRead()) {
    Toast.makeText(this, "Attachment Error", Toast.LENGTH_SHORT).show();
    finish();
    return;
}
Uri uri = Uri.parse("file://" + file);
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Send email..."));

トーストメッセージが届きません。ありがとう。

64
Mr Jackson

試してください:

Uri.fromFile(file);

の代わりに:

Uri.parse("file://" + file);

また、text/xmlは、MIMEタイプに対応します。これは、変数名が示すとおり、これがXMLファイルであると想定しています。

58
CommonsWare

このファイルはおそらく誰もが読めるものではありません。

編集:確かに。これを試してください:

Uri uri = Uri.parse("file://" + file.getAbsolutePath());
13
Femi