3

ファイルが添付された電子メールを送信するように Android アプリを取得しようとしています。.txt ファイルは単純なので、.txt ファイルから始めています。

これまでのところ、これがあります(フラグメント内で行われます):

//Send the email
Intent mailIntent = new Intent(Intent.ACTION_SEND);
mailIntent.setType("text/Message");
mailIntent.putExtra(Intent.EXTRA_EMAIL  , new String[]{address});
mailIntent.putExtra(Intent.EXTRA_SUBJECT, "Test Email");
mailIntent.putExtra(Intent.EXTRA_TEXT   , "Hi!  This is a test!");

//Deal with the attached report
String FileName = "report.txt";
Calculator.generateReport(getActivity().getApplicationContext(), FileName);
//It will be called "report.txt"
File attachment = getActivity().getApplicationContext().getFileStreamPath(FileName);
if (!attachment.exists() || !attachment.canRead()) {
    Toast.makeText(getActivity().getApplicationContext(), 
                   "Attachment Error", 
                   Toast.LENGTH_SHORT).show();
    System.out.println("ATTACHMENT ERROR");
}
else
{
    Uri uri = Uri.fromFile(attachment);
    mailIntent.putExtra(Intent.EXTRA_STREAM, uri);
}

//Send, if valid!
try {
   startActivity(Intent.createChooser(mailIntent, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(getActivity().getApplicationContext(), 
               "There are no email clients installed.", 
               Toast.LENGTH_SHORT).show();
}

残念ながら、それはうまくいかないようです。これで、ファイルが存在することがわかりました。の後に適切なコードを挿入するgenerateReport()と、ファイルを見つけてアクセスし、その内容を読み取ることができます。それはそこにあり、私は正しい名前を持っています。

電子メール クライアントを選択するオプションが表示されたときに、Gmail を選択すると、実際にreport.txt電子メールにファイルが添付されていることがわかります。しかし、メールを送信すると「添付ファイルを送信できませんでした」という通知が届き、何も添付されていないメールが届きます。

text/plainやなどの他のインテント タイプも試してみましたがmessage/rfc822、役に立ちませんでした。

私が間違っているかもしれないことについてのアイデアはありますか?

4

2 に答える 2

4

ファイルをアプリに非公開として保存した場合、アプリは正常かどうかを確認できますが、外部の電子メール クライアントはそれを確認できません。

外部ストレージに書き出すか、公開する必要があります。

http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLEまたは http://developer.android.com/guide/topics/data/data-storage.htmlを使用します

于 2013-04-12T01:06:21.107 に答える