forked from extern/Unexpected-Keyboard
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.
This commit is contained in:
parent
5e01198500
commit
68945ff227
@ -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"
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user