Seems like it should work. And I can see words in User Dictionaries in Settings after importing them.
public static void addWord(Context context, String word, Locale locale) {
final int COLUMN_COUNT = 5;
ContentValues values = new ContentValues(COLUMN_COUNT);
values.put(UserDictionary.Words.WORD, word);
values.put(UserDictionary.Words.FREQUENCY, DEFAULT_FREQUENCY);
values.put(UserDictionary.Words.LOCALE, null == locale ? null : locale.toString());
values.put(UserDictionary.Words.APP_ID, 0); // TODO: Get App UID
values.put(UserDictionary.Words.SHORTCUT, "");
resovler.insert(UserDictionary.Words.CONTENT_URI, values);
}
}
But instead google keyboard is crushes with this error (I can see it in logcat)
Process: com.google.android.inputmethod.latin, PID: 30183
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at com.android.inputmethod.latin.makedict.FusionDictionary.add(FusionDictionary.java:486)
at com.android.inputmethod.latin.makedict.FusionDictionary.add(FusionDictionary.java:401)
at com.android.inputmethod.latin.DictionaryWriter.addUnigramWord(DictionaryWriter.java:72)
at com.android.inputmethod.latin.ExpandableBinaryDictionary.addWord(ExpandableBinaryDictionary.java:273)
at com.android.inputmethod.latin.UserBinaryDictionary.addWords(UserBinaryDictionary.java:253)
at com.android.inputmethod.latin.UserBinaryDictionary.loadDictionaryAsync(UserBinaryDictionary.java:181)
at com.android.inputmethod.latin.ExpandableBinaryDictionary.writeBinaryDictionary(ExpandableBinaryDictionary.java:542)
at com.android.inputmethod.latin.ExpandableBinaryDictionary.access$700(ExpandableBinaryDictionary.java:48)
at com.android.inputmethod.latin.ExpandableBinaryDictionary$12.run(ExpandableBinaryDictionary.java:630)
at com.android.inputmethod.latin.utils.PrioritizedSerialExecutor$1.run(PrioritizedSerialExecutor.java:70)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:811)
After this crash everything seems to work. Spellchecker can see imported words.