我正在尝试将从Scroll视图创建的PDF附加到电子邮件中。但电子邮件没有任何附件发送。没有显示错误消息。
public void emailPDF(View view){
PdfDocument document = getPDF();
ByteArrayOutputStream os = new ByteArrayOutputStream();
try{
document.writeTo(os);
document.close();
os.close();
}catch (IOException e){
throw new RuntimeException("Error generating file", e);
}
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, "ammar5001@gmail.com");
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "report");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, " ");
emailIntent.setType("application/pdf"); // accept any image
//attach the file to the intent
emailIntent.putExtra(Intent.EXTRA_STREAM, os.toByteArray() );
startActivity(Intent.createChooser(emailIntent, "Send your email in:"));
}
public PdfDocument getPDF(){
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(300, 300, 1).create();
PdfDocument.Page page = document.startPage(pageInfo);
View content = findViewById(R.id.scrollView);
content.draw(page.getCanvas());
document.finishPage(page);
return document;
}
答案 0 :(得分:1)
EXTRA_STREAM
不接受byte[]
。需要Uri
,指向要流式传输的数据。这可能是外部存储上的File
,也可能是内部存储上文件的content://
Uri
FileProvider
或content://
Uri
来自试图为你的ContentProvider
提供服务的byte[]
(虽然我担心堆空间)等等。