This one is mostly about documents Gander could open but would not, and about files it was only ever handed a look at.
Password-protected PDFs
A PDF that wants a password now asks you for it. Type it and the document opens. Get it wrong and it says so and lets you try again, as often as you like, and none of that rereads the file.
Before this the renderer raised its password error and the viewer showed you the raw text of it, which is about the least useful thing it could say.
The prompt is drawn in the page rather than as an Android dialog. Gander has no bridge between a document and the app in either direction, and that absence is most of what keeps an untrusted file from reaching the app, so a password is not worth opening one for.
Nothing is kept. The password lives as long as the document is on screen and goes when you leave.
A file encrypted in a way the renderer cannot read at all now says so in a sentence too, rather than printing the exception at you.
Save a copy
The file you are looking at can be kept, through Save a copy in the viewer menu.
It is meant for the file that came from somewhere else: an attachment, or a document another app hands over, which Gander is allowed to read only for as long as that screen is open and which is out of reach once you leave.
Where the copy goes is chosen in Android's own picker, so this asks for no permission, and Gander is handed the one file it just wrote and nothing around it.
A large copy reports its progress under the toolbar. One that fails takes its half-written file with it, rather than leaving something that opens and looks complete.
A document left open no longer takes the app down with it
Everything the sandboxed viewer draws, PDFs included, is rendered in a process of its own, and Android is free to end that process when memory runs short. Sharing a file to a large app is exactly that situation: the other app starts up in front, and the process holding the document is left with nobody looking at it.
Gander had never answered that notification, and not answering it does not mean nothing happens. It means the framework closes the application. So the app disappeared with no crash of its own behind it and nothing on screen to account for it.
It now stays open, says that Android closed the document to free up memory, and offers to load it again.
Messages in the PDF viewer are drawn at a readable size
A PDF page is laid out at a fixed width and zoomed to fit, which is what keeps it sharp. The cards the viewer puts on screen had been quietly riding along with that, at about a third of the size they were meant to be. The card explaining that a phone's browser engine is too old for PDFs was one of them.
They are sized for that zoom now rather than against it.
Install
Gander-1.11.apk runs on every phone. The app ships no native code, so there is no architecture to choose.
Viewing PDFs needs Android System WebView 125 or newer (May 2024). Any phone still receiving WebView updates is well past that.
Verify before installing if you like. Signing certificate SHA-256:
5B:5C:F6:4A:94:23:7C:D5:F0:E0:85:76:00:38:BC:1C:EB:DF:18:DA:BA:5C:B3:EA:CA:7C:15:9F:22:A7:E2:4B
Help get Gander onto the Play Store. Publishing from a personal developer account needs 12 testers opted in for 14 days, and Google now checks they actually used the app rather than just installing it. If you can spare two minutes: join gander-testers@googlegroups.com with your Play Store Google account, then use this opt-in link — https://play.google.com/apps/testing/com.arjun.gander — and set it as your default PDF viewer for two weeks. Details in the pinned Discussion.