2017-03-06 27 views
0

在我的Android打印類中,有時會在onWrite函數中遇到PageRange的參數爲null,它是一個覆蓋函數,並且該值是從Android框架傳遞的,我想找到它的原因有時是空(不是100%)?這是一個設備問題嗎?有人遇到過嗎?代碼和日誌低於:Android PrintManager PageRange爲null

class PdfFragmentPrintDocumentAdapter extends PrintDocumentAdapter{ 
    public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback) { 

    ........ 
    callback.onWriteFinished(pages); 
    } 
......... 


java.lang.IllegalArgumentException: pages cannot be empty 
    at android.print.PrintManager$PrintDocumentAdapterDelegate$MyWriteResultCallback.onWriteFinished(PrintManager.java:961) 
    at com.microsoft.pdfviewer.PdfFragmentPrint$PdfFragmentPrintDocumentAdapter$2.run(PdfFragmentPrint.java:265) 
    at com.microsoft.pdfviewer.PdfFragmentPrint$PdfFragmentPrintDocumentAdapter.implementOnWriteInDedicatedThread(PdfFragmentPrint.java:278) 
    at com.microsoft.pdfviewer.PdfFragmentPrint$PdfFragmentPrintDocumentAdapter.onWrite(PdfFragmentPrint.java:213) 
    at android.print.PrintManager$PrintDocumentAdapterDelegate$MyHandler.handleMessage(PrintManager.java:792) 
+0

因爲onWrite接受取消信號。 – newszer

+0

有沒有人知道如何處理onWrite取消?我調用onWriteCancelled();但它仍然會執行onWriteFinished()。 – newszer

回答

0

除非你明確要提取的頁面調用自己和onWriteFinished(new PageRange[]{PageRange.ALL_PAGES})寫全PDF格式。在這種情況下,即使通過了頁面範圍,系統也會渲染並僅打印選定的頁面。