just an idea:
we can use a different approach to pass e-book file name to the app.
But it would imply modifying cr3 sources.
Here's what I mean:
At the very beginning cr3 would show us a dialogue window with the available e-books listing. After we select some filename entry it'd come back to the normal execution flow. But on that moment cr3 will have all the needed information regarding filename to process.
Of course in this case we will have to implement that "dialogue" and a search appropriate files feature within it.
If I am not mistaken this time we wouldn't need all these manipulations with root FS and 'Java-related nightmare'. Pls correct me if I am wrong.