From 68945ff2271fafc14aec9740c45c22e23bd433de Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Sun, 9 May 2021 00:56:59 +0200 Subject: Restore support for Android < 12, set minimal version to 4 API level 12 is required for "subtype" code introduced in 1.7. This adds a fallback for older version, "subtype" features are not available but the keyboard is usable. Changet he minimal version to 4 to be able to query the API level. Using integer constant for versions because that's how it's presented in the documentation. Build.VERSION_CODES is WTF. --- srcs/juloo.keyboard2/Keyboard2.java | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'srcs/juloo.keyboard2/Keyboard2.java') diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java index ef497ff..e32de42 100644 --- a/srcs/juloo.keyboard2/Keyboard2.java +++ b/srcs/juloo.keyboard2/Keyboard2.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Typeface; import android.inputmethodservice.InputMethodService; +import android.os.Build.VERSION; import android.os.Bundle; import android.os.IBinder; import android.text.InputType; @@ -114,13 +115,33 @@ public class Keyboard2 extends InputMethodService _config.accent_flags_to_remove = ~to_keep & KeyValue.FLAGS_ACCENTS; } + private void refreshSubtypeLegacyFallback() + { + // Fallback for the accents option: Only respect the "None" case + switch (_config.accents) + { + case 1: case 2: case 3: _config.accent_flags_to_remove = 0; break; + case 4: _config.accent_flags_to_remove = KeyValue.FLAGS_ACCENTS; break; + } + // Fallback for the layout option: Use qwerty in the "system settings" case + _currentTextLayout = (_config.layout == -1) ? R.xml.qwerty : _config.layout; + } + private void refreshSubtypeImm() { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); _config.shouldOfferSwitchingToNextInputMethod = imm.shouldOfferSwitchingToNextInputMethod(getConnectionToken()); - InputMethodSubtype subtype = imm.getCurrentInputMethodSubtype(); - refreshSubtypeLayout(subtype); - refreshAccentsOption(imm, subtype); + if (VERSION.SDK_INT < 12) + { + // Subtypes won't work well under API level 12 (getExtraValueOf) + refreshSubtypeLegacyFallback(); + } + else + { + InputMethodSubtype subtype = imm.getCurrentInputMethodSubtype(); + refreshSubtypeLayout(subtype); + refreshAccentsOption(imm, subtype); + } } @Override -- cgit v1.2.3