通过电子邮件发送PDF文档

时间:2015-09-02 18:06:10

标签: android android-intent android-pdf-api

我正在尝试将从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;
}

1 个答案:

答案 0 :(得分:1)

EXTRA_STREAM不接受byte[]。需要Uri,指向要流式传输的数据。这可能是外部存储上的File,也可能是内部存储上文件的content:// Uri FileProvidercontent:// Uri来自试图为你的ContentProvider提供服务的byte[](虽然我担心堆空间)等等。