I see two questions in your comment:
1. Do we need to close and init database here?
If isDbOnSdCard==true, it uses the cache directory by using LocalStorage.getStorage(). I expect that the user wants to move all he can from internal to external memory. Users that choose a cache directory on external sd also want to have db file on external sd. So to use the copied db file on external sd card immediately, I need to close and init db. The user could also close c:geo and reopen to switch. But he might not realize that he didn't close c:geo correctly and will use the "old" db file until next restart and will be confused by missing data.

2. There is no information for the user if setting offline directory fails
You are right, I could give a toast message here. But that normaly will not happen because SimpleDirChooser in the used mode will not allow to choose a directory not existing (entry not available) or not writeable (checkbox disabled).