1
0
Fork 0

fixed the system spellchecker not being detected on CAT S22 Flip

This commit is contained in:
sspanak 2025-02-18 17:53:20 +02:00 committed by Dimo Karaivanov
parent 685cbc1b4f
commit 67dd940376
2 changed files with 35 additions and 1 deletions

View file

@ -0,0 +1,10 @@
package io.github.sspanak.tt9.preferences.screens.setup;
import android.view.textservice.SentenceSuggestionsInfo;
import android.view.textservice.SpellCheckerSession;
import android.view.textservice.SuggestionsInfo;
class DummySpellCheckerListener implements SpellCheckerSession.SpellCheckerSessionListener {
public void onGetSuggestions(SuggestionsInfo[] results){}
public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] results){}
}

View file

@ -1,7 +1,10 @@
package io.github.sspanak.tt9.preferences.screens.setup;
import android.content.Context;
import android.content.Intent;
import android.service.textservice.SpellCheckerService;
import android.view.textservice.SpellCheckerSession;
import android.view.textservice.TextServicesManager;
import androidx.preference.Preference;
@ -18,13 +21,14 @@ public class ItemSpellCheck extends ItemClickable {
if (DeviceInfo.noTouchScreen(activity)) {
disable();
item.setVisible(false);
} else if (isSpellCheckEnabled(activity)) {
} else if (isSpellCheckEnabled(activity) || isTextSpellCheckerEnabled(activity)) {
enable();
} else {
disable();
}
}
private boolean isSpellCheckEnabled(PreferencesActivity activity) {
if (activity == null) {
return false;
@ -34,6 +38,23 @@ public class ItemSpellCheck extends ItemClickable {
return activity.getPackageManager().resolveService(spellCheckIntent, 0) != null;
}
private boolean isTextSpellCheckerEnabled(PreferencesActivity activity) {
if (activity == null) {
return false;
}
TextServicesManager tsm = (TextServicesManager) activity.getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE);
SpellCheckerSession session = tsm.newSpellCheckerSession(null, null, new DummySpellCheckerListener(), true);
if (session == null) {
return false;
}
session.close();
return true;
}
@Override
public void enable() {
if (item != null) {
@ -43,6 +64,7 @@ public class ItemSpellCheck extends ItemClickable {
}
}
@Override
public void disable() {
if (item != null) {
@ -51,6 +73,7 @@ public class ItemSpellCheck extends ItemClickable {
}
}
@Override
public void enableClickHandler() {
if (item != null && item.isEnabled()) {
@ -58,6 +81,7 @@ public class ItemSpellCheck extends ItemClickable {
}
}
@Override
protected boolean onClick(Preference p) {
return UI.showSystemSpellCheckerSettings(p.getContext());