問題が発生しています...添付ファイルを使用してインテントからGmailを開こうとすると、トーストに「空のファイルを送信できません」と表示されます。私のPDFファイルは私のアプリのフォルダー(/storage/emulated/0/Android/data/teste.com.br.cartaovisitateste/files/business.pdf)にありますが、このファイルを吸ってメールに入れることはできません。おそらく、問題はパスをローカライズすることですが、これを解決する方法がわかりません
これは私のコードです:
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("vnd.android.cursor.dir/email");
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
i.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
i.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
// it does not work
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("/storage/emulated/0/Android/data/digitalsa.com.br.cartaovisitaultragaz/files/business.pdf"));
// it does not work too
Uri.fromFile(new File(Environment.getDataDirectory().getAbsolutePath(), "business.pdf"));
i.putExtra(Intent.EXTRA_SUBJECT, String.valueOf(Hawk.get("registro_nome")).concat(" Business Card"));
startActivity(Intent.createChooser(i, "Enviando e-mail..."));
i.setType("vnd.android.cursor.dir/email");
PDFファイルのMIMEタイプはapplication/pdf
です。のMIMEタイプは、またはにACTION_SEND
Intent
使用されるタイプのいずれEXTRA_STREAM
かEXTRA_TEXT
です。あなたの場合、あなたはを使用EXTRA_STREAM
しています、そしてそれはPDFファイルを指さそうとしているようです。
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("/storage/emulated/0/Android/data/digitalsa.com.br.cartaovisitaultragaz/files/business.pdf"));
パスをハードコーディングしないでください。そして、Uri
値ではないものをに渡さないでくださいUri.parse()
。Aは、Uri
のような、スキームを持っているhttps
、file
またはcontent
。
Uri.fromFile(new File(Environment.getDataDirectory().getAbsolutePath(), "business.pdf"));
まず、あなたはそれを余分に入れていません。値は使用されていません。
第二に、Uri.fromFile()
Android7.0以降ではIntent
追加で動作しません。を取得しFileUriExposedException
ます。使用FileProvider
PDF、および使用を提供するためにFileProvider.getUriForFile()
取得するためUri
に入れてEXTRA_STREAM
のAndroid 7.0以降のデバイス上で、少なくとも、。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加