Since Android 8.0 background execution is limited, therefore Context.startService may throw an IllegalStateException if the service is not permitted to run as a background service.
When loading a saved game, display the last time played in human
readable relative time. For example, "5 minutes ago" or "Yesterday".
This matches the template from list_entry_layout.xml
The current implementation writes the date in full, including day,
month, year, hours, minutes, and seconds. Not only is that more
information than we really need, but in devices with a narrower screen
this can cause the date to be drawn on top of the difficulty.
Observation:
savedInstanceState.getInt("gameSolved") ALWAYS returned 0 (default).
The key "gameSolved" is set with putBoolean, which is correct. A ClassCastException was thrown in getInt and the catch block returned the default 0-value.
Issues before change:
Multiple statements that are supposed to be executed based on gameSolved (like disabling the special keys and the sudoku grid), were skipped.
Because of that, after finishing a game, if someone changed the screen orientation, the keys and the grid became active again and the grid could be modified.
Changes done:
1. Changed it to getBoolean("gameSolved")
2. Removed the " == 1" part because that is redundant for a boolean.
1. Using fill color to represent completion and border for selection.
2. Updated image numfull.png to reflect this in help page
3. The button style gets updated on completion, even if the button is selected.
Added darkmode to game field
Fixed a crash on low density devices
Fixed a crash in the DailySudoku
Fixed the marking of custom levels in LoadGameActivity
Version increase to v3.0.0
Bug fixing to enable deeplinking "sudoku://<string>.
Create an intent filter for "sudoku://<string>". Intent filter of http and https cannot be used,
because both have different rules. Different arguments regarding scheme and host.