I think showing an error message to the user when he selects a removed entry is currently the best approach. You can also start a background service to check the file list after the user started your app. In most cases the code will be faster than user's reactions. I think the app can update itself before the user interacts with data. Or you can show only a progress bar while updating the data, and show the data (books) when done.
Alternatively, there is FileObserver
. But it is impossible, I think. You need a background service to watch for files. And that is not good for battery life and device's performance.