diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtil.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtil.java index f292a2e270..e5e5c371a9 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtil.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/cloud/CloudDataJsonUtil.java @@ -40,8 +40,7 @@ public class CloudDataJsonUtil { String aFont, String aOskFont) { HashMap keyboardInfo = new HashMap(); - if(aPackageId!=null) - keyboardInfo.put(KMManager.KMKey_PackageID, aPackageId); + keyboardInfo.put(KMManager.KMKey_PackageID, aPackageId); keyboardInfo.put(KMManager.KMKey_KeyboardID, aKeyboardId); keyboardInfo.put(KMManager.KMKey_LanguageID, aLanguageId); keyboardInfo.put(KMManager.KMKey_KeyboardName, aKeyboardName); @@ -57,7 +56,9 @@ public class CloudDataJsonUtil { public static List processKeyboardJSON(JSONObject query, boolean fromKMP) { List keyboardsList = new ArrayList<>(); - //keyboardModifiedDates = new HashMap(); + if (query.length() == 0) { + return keyboardsList; + } String isCustom = fromKMP ? "Y" : "N"; @@ -75,13 +76,14 @@ public class CloudDataJsonUtil { int kbLength = langKeyboards.length(); for (int j = 0; j < kbLength; j++) { JSONObject keyboardJSON = langKeyboards.getJSONObject(j); + String pkgID = keyboardJSON.optString(KMManager.KMKey_PackageID, KMManager.KMDefault_UndefinedPackageID); String kbID = keyboardJSON.getString(KMManager.KMKey_ID); String kbName = keyboardJSON.getString(KMManager.KMKey_Name); String kbVersion = keyboardJSON.optString(KMManager.KMKey_KeyboardVersion, "1.0"); String kbFont = keyboardJSON.optString(KMManager.KMKey_Font, ""); //String kbKey = String.format("%s_%s", langID, kbID); - HashMap hashMap = createKeyboardInfoMap(null,langID,langName,kbID,kbName,kbVersion,isCustom,kbFont,null); + HashMap hashMap = createKeyboardInfoMap(pkgID,langID,langName,kbID,kbName,kbVersion,isCustom,kbFont,null); // if (keyboardModifiedDates.get(kbID) == null) { diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/JSONUtils.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/JSONUtils.java index 1f93ea8282..414f7b36db 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/JSONUtils.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/packages/JSONUtils.java @@ -33,6 +33,9 @@ public class JSONUtils { * Will need to swap kmp.json (keyboards : languages) to cloud order (languages : keyboards) */ public static JSONArray getLanguages() { + if (resourceRoot == null) { + return new JSONArray(); + } File[] packages = resourceRoot.listFiles(); JSONArray languagesArray = new JSONArray(); JSONParser parser = new JSONParser(); diff --git a/android/history.md b/android/history.md index 7ebf660089..995a2ce0ba 100644 --- a/android/history.md +++ b/android/history.md @@ -20,6 +20,8 @@ ## 2019-11-27 12.0.4211 stable * Bug fix: * Fix crashes involving context manipulation of invalid context (#2377) + * Fix Package ID so other languages from a keyboard .kmp package can be installed (#2378) + * Fix crashes when accessing the Cloud for downloading keyboards (#2378) ## 2019-11-26 12.0.4210 stable * No change to Keyman for Android (updated Keyman Web Engine, #2322)