Android PdfRenderer выбрасывает IOException
В моем приложении перечислены файлы PDF, и когда пользователь выбирает PDF, приложение открывает его. Если пользователь выбирает поврежденный файл PDF, PdfRenderer выбрасываетIOException
(это нормально, так как я ловлю это исключение и сообщаю пользователю, что файл поврежден).
Но проблема в том, что после этого IOException
выбрасывается для всех файлов PDF, которые пытается открыть пользователь (даже для не поврежденных)
Соответствующий код
File file = new File(filePath);
mFileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
if (mFileDescriptor != null) {
mPdfRenderer = new PdfRenderer(mFileDescriptor);
}
Трассировки стека
openRenderer: java.io.IOException: file not in PDF format or corrupted
at android.graphics.pdf.PdfRenderer.nativeCreate(Native Method)
at android.graphics.pdf.PdfRenderer.<init>(PdfRenderer.java:166)
at ****.****.****.PdfUtil.openRenderer(PdfUtil.java:63)
at ****.****.****.PdfUtil.getMaxPages(PdfUtil.java:46)
at ****.****.****.PdfViewActivity.init(PdfViewActivity.java:166)
at ****.****.****.ui.PdfViewActivity.onCreate(PdfViewActivity.java:58)
at android.app.Activity.performCreate(Activity.java:7023)
at android.app.Activity.performCreate(Activity.java:7014)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2870)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1601)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:172)
at android.app.ActivityThread.main(ActivityThread.java:6590)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Почему это происходит? Как я могу это исправить?
NB. Я уже пробовал копировать PDF-файл в каталог кэша. Это не имеет значения.
Та же проблема в PdfRenderer google пример репо здесь.