public static List<KeyboardAddOnAndBuilder> getEnabledKeyboards(Context askContext) { final List<KeyboardAddOnAndBuilder> allAddOns = msInstance.getAllAddOns(askContext); Logger.i( TAG, "Creating enabled addons list. I have a total of " + allAddOns.size() + " addons"); // getting shared prefs to determine which to create. final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(askContext); final ArrayList<KeyboardAddOnAndBuilder> enabledAddOns = new ArrayList<>(); for (int addOnIndex = 0; addOnIndex < allAddOns.size(); addOnIndex++) { final KeyboardAddOnAndBuilder addOn = allAddOns.get(addOnIndex); final boolean addOnEnabled = sharedPreferences.getBoolean(addOn.getId(), addOn.getKeyboardDefaultEnabled()); if (addOnEnabled) { enabledAddOns.add(addOn); } } // Fix: issue 219 // Check if there is any keyboards created if not, lets create a default english keyboard if (enabledAddOns.size() == 0) { final SharedPreferences.Editor editor = sharedPreferences.edit(); final KeyboardAddOnAndBuilder addOn = allAddOns.get(0); editor.putBoolean(addOn.getId(), true); SharedPreferencesCompat.EditorCompat.getInstance().apply(editor); enabledAddOns.add(addOn); } if (BuildConfig.TESTING_BUILD) { for (final KeyboardAddOnAndBuilder addOn : enabledAddOns) { Logger.d(TAG, "Factory provided addon: %s", addOn.getId()); } } return enabledAddOns; }