From 80fb43afda855c3dbc0bb409a3da878b431bca9f Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Mon, 24 Aug 2020 13:34:55 +0700 Subject: [PATCH] fix(android): Fix crashes involving Keyboard Picker This fixes the null-pointer-exceptions reported in Crashlytics * [MapCompat](https://console.firebase.google.com/u/0/project/kmapro-ee779/crashlytics/app/android:com.tavultesoft.kmapro/issues/d1bbc6248a6cf73a4a2607646670a73b?time=last-seven-days&sessionId=5F43249600B0000169B855CBEB66027A_DNE_0_v2) * [KeyboardPickerActivity](https://console.firebase.google.com/u/0/project/kmapro-ee779/crashlytics/app/android:com.tavultesoft.kmapro/issues/f0e89e2ad194b4d55394461f07dbed92?time=last-seven-days&sessionId=5F42B17B01DB00011DEB0D57B0E2AF4E_DNE_0_v2) --- .../java/com/tavultesoft/kmea/KeyboardPickerActivity.java | 4 ++++ .../src/main/java/com/tavultesoft/kmea/util/MapCompat.java | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardPickerActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardPickerActivity.java index 64d5562869..10b2e64dbe 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardPickerActivity.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardPickerActivity.java @@ -469,6 +469,10 @@ public final class KeyboardPickerActivity extends AppCompatActivity { @SuppressWarnings("unchecked") private static ArrayList> getList(Context context, String filename) { ArrayList> list = null; + if (context == null) { + KMLog.LogError(TAG, "getList() where context is null."); + return list; + } File file = new File(context.getDir("userdata", Context.MODE_PRIVATE), filename); if (file.exists()) { diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/util/MapCompat.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/util/MapCompat.java index 4146da75da..8a48017dca 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/util/MapCompat.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/util/MapCompat.java @@ -10,8 +10,13 @@ import java.util.HashMap; * Reference: https://stackoverflow.com/questions/41211960/alternative-to-getordefault-for-devices-below-api-24-android */ public final class MapCompat { + private static final String TAG = "MapCompat"; public static V getOrDefault(HashMap map, K key, V defaultValue) { + if (map == null) { + KMLog.LogError(TAG, "map is null, returning default value " + defaultValue); + return defaultValue; + } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { return map.getOrDefault(key, defaultValue); }