Logic to set the fire time in the future wasn't firing when display of
the nag was diabled, so timers fired every few ms because they always
existed in the past.
Because I can't filter for file type, user may ask to open the wrong
thing. So put up an alert with a "try again" button. And include the
name of the chosen file for clarity.
After a hard-reset I can't open an archive file if I'm looking for
x-zip, because, I guess, the mime type is something the OS records
rather than deduced from the file. With this change, I can export,
hard-reset, and then import the file to get my settings and games
going again.
Main problem, aside from the explanations being stubbed out, is that
zip file overwriting doesn't work: once an entry is in the file, it'll
be there when the file's overwritten even if that entry is
excluded. This happens even if I create the file in memory and then
overwrite using the bytes.
A bit of testing says this works (to allow somebody moving to a new
phone to export and then import sharedpreferences in addition to the
games DB. There may be race conditions, but it probably works better
than nothing.
Remove it from known set so it can be used to test. Get rid of
filenames having umlaut since that screws up URLs between Android and
nginx (not sure whose fault and not going there now.) Lang name should
be able to have an umlaut, but it gets used for filename for now so
fix later....
Now we use only ISOCode string internally to identify languages, and
since that's universal it can be built into an wordlist and used
without the build of CrossWords knowing about that language
specifically (though it'll have to know about it to have the language
name be localizable.) For legacy support, though, the old int codes
are transmitted in invitations and URLs IFF available, otherwise the
string's used. If a newer build invites and older build to play in a
too-new language there will be trouble.