From 3d7029aa366738ac180566d59f2b17c2842145af Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Wed, 12 May 2021 15:48:42 +0700 Subject: [PATCH 1/2] fix(android/engine): Check lexical-model file exists before using --- .../main/java/com/tavultesoft/kmea/KMManager.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java index feca84eb57..7b93e8078f 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java @@ -1049,7 +1049,14 @@ public final class KMManager { String pkgID = lexicalModelInfo.get(KMKey_PackageID); String modelID = lexicalModelInfo.get(KMKey_LexicalModelID); String languageID = lexicalModelInfo.get(KMKey_LanguageID); - String path = "file://" + getLexicalModelsDir() + pkgID + File.separator + modelID + ".model.js"; + boolean modelFileExists = true; + File modelFile = new File(getLexicalModelsDir(), pkgID + File.separator + modelID + ".model.js"); + String path = "file://" + modelFile.getAbsolutePath(); + + if (!modelFile.exists()) { + modelFileExists = false; + KMLog.LogError(TAG, modelFile.getAbsolutePath() + " does not exist"); + } JSONObject modelObj = new JSONObject(); JSONArray languageJSONArray = new JSONArray(); @@ -1076,12 +1083,12 @@ public final class KMManager { boolean mayCorrect = prefs.getBoolean(getLanguageCorrectionPreferenceKey(languageID), true); RelativeLayout.LayoutParams params; - if (InAppKeyboard != null && InAppKeyboardLoaded && !InAppKeyboardShouldIgnoreTextChange) { + if (InAppKeyboard != null && InAppKeyboardLoaded && !InAppKeyboardShouldIgnoreTextChange && modelFileExists) { params = getKeyboardLayoutParams(); InAppKeyboard.setLayoutParams(params); InAppKeyboard.loadJavascript(KMString.format("enableSuggestions(%s, %s, %s)", model, mayPredict, mayCorrect)); } - if (SystemKeyboard != null && SystemKeyboardLoaded && !SystemKeyboardShouldIgnoreTextChange) { + if (SystemKeyboard != null && SystemKeyboardLoaded && !SystemKeyboardShouldIgnoreTextChange && modelFileExists) { params = getKeyboardLayoutParams(); SystemKeyboard.setLayoutParams(params); SystemKeyboard.loadJavascript(KMString.format("enableSuggestions(%s, %s, %s)", model, mayPredict, mayCorrect)); From 755d3da0dfbc83c7d78406b99321c41898c64b43 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Thu, 13 May 2021 06:56:10 +0700 Subject: [PATCH 2/2] fix(android/engine): Disable suggestions if file doesn't exist --- .../KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java index 7b93e8078f..49ed093672 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java @@ -1053,8 +1053,10 @@ public final class KMManager { File modelFile = new File(getLexicalModelsDir(), pkgID + File.separator + modelID + ".model.js"); String path = "file://" + modelFile.getAbsolutePath(); + // Disable sugestions if lexical-model file doesn't exist if (!modelFile.exists()) { modelFileExists = false; + setBannerOptions(false); KMLog.LogError(TAG, modelFile.getAbsolutePath() + " does not exist"); }