From 099b563c858d9c36a4991e12a1d5533dd4234b2d Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Mon, 20 May 2024 08:41:21 +0700 Subject: [PATCH 1/2] fix(android/app): Verify extracted text is not null --- .../kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java index 913a643a807..9b920582426 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java +++ b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java @@ -169,7 +169,7 @@ public void onStartInput(EditorInfo attribute, boolean restarting) { InputConnection ic = getCurrentInputConnection(); if (ic != null) { ExtractedText icText = ic.getExtractedText(new ExtractedTextRequest(), 0); - if (icText != null) { + if (icText != null && icText.text != null) { boolean didUpdateText = KMManager.updateText(KeyboardType.KEYBOARD_TYPE_SYSTEM, icText.text.toString()); boolean didUpdateSelection = KMManager.updateSelectionRange(KeyboardType.KEYBOARD_TYPE_SYSTEM); if (!didUpdateText || !didUpdateSelection) From 9e0207ad871b16954a5161eb51b748e07d6c7f4d Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Mon, 20 May 2024 10:58:31 +0700 Subject: [PATCH 2/2] Update android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java Co-authored-by: Marc Durdin --- .../src/main/java/com/keyman/android/SystemKeyboard.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java index 9b920582426..cf32ba0c000 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java +++ b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java @@ -169,6 +169,11 @@ public void onStartInput(EditorInfo attribute, boolean restarting) { InputConnection ic = getCurrentInputConnection(); if (ic != null) { ExtractedText icText = ic.getExtractedText(new ExtractedTextRequest(), 0); + /* + We do sometimes receive null `icText.text`, even though + getExtractedText() docs does not list this as a possible + return value, so we test for that as well (#11479) + */ if (icText != null && icText.text != null) { boolean didUpdateText = KMManager.updateText(KeyboardType.KEYBOARD_TYPE_SYSTEM, icText.text.toString()); boolean didUpdateSelection = KMManager.updateSelectionRange(KeyboardType.KEYBOARD_TYPE_SYSTEM);