abouttreesummaryrefslogcommitdiff
diff options
context:
space:
mode:
authorJules Aguillon2021-05-09 00:56:59 +0200
committerJules Aguillon2021-05-09 00:56:59 +0200
commit68945ff2271fafc14aec9740c45c22e23bd433de (patch)
tree1f471101fb7f6f374051b9f3ba446a16f26ffc33
parent5e01198500e92650fb9fb5e73a4a86e9808e14d2 (diff)
downloadunexpected-keyboard-68945ff2271fafc14aec9740c45c22e23bd433de.tar.gz
unexpected-keyboard-68945ff2271fafc14aec9740c45c22e23bd433de.zip
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.
-rw-r--r--AndroidManifest.xml2
-rw-r--r--srcs/juloo.keyboard2/Keyboard2.java27
2 files changed, 25 insertions, 4 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index e3881df..fa4bf3f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -5,7 +5,7 @@
android:versionName="1.8"
android:hardwareAccelerated="false">
- <uses-sdk android:minSdkVersion="3"
+ <uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="29" />
<application android:label="@string/app_name"
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