1

この問題をウェブ全体で検索して調べましたが、明確な答えが得られませんでした。Androidのドキュメントには単語が追加されると記載されているため、コンテンツ プロバイダーを使用してユーザー辞書に単語を追加しましたが、その後キーパッドに入力すると、候補ビューの候補に単語が表示されず、タップした他の単語として表示されません。次回そこに登場。多くの人がネット上で質問し、回答を得られていないため、この問題に対する完全な回答を本当に感謝しています. 私はこれを試しました

    Uri mNewUri;
    // Defines an object to contain the new values to insert
    ContentValues mNewValues = new ContentValues();

     // Sets the values of each column and inserts the word. The arguments to the "put"
     // method are "column name" and "value"

    mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
    mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
    mNewValues.put(UserDictionary.Words.WORD, "Qasim");
    mNewValues.put(UserDictionary.Words.FREQUENCY, "100");

    mNewUri = getContentResolver().insert(
        UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
        mNewValues                          // the values to insert
    );


    Uri dic = UserDictionary.Words.CONTENT_URI;
    ContentResolver resolver = getContentResolver();
    Cursor cursor = resolver.query(dic, null, null, null, null);
 //here i retrieve all the words stored into my dictionary
    while (cursor.moveToNext()){
       String word = cursor.getString(cursor.getColumnIndex(UserDictionary.Words.WORD));
       int id = cursor.getInt(cursor.getColumnIndex(UserDictionary.Words._ID));
       String app = cursor.getString(cursor.getColumnIndex(UserDictionary.Words.APP_ID));
       int frequency = cursor.getInt(cursor.getColumnIndex(UserDictionary.Words.FREQUENCY));
       String locale = cursor.getString(cursor.getColumnIndex(UserDictionary.Words.LOCALE));
       Log.i("", "word: "+word+"\nId: "+id+"\nAppID: "+app+"\nfrequency: "+frequency+"\nLocale:"+locale);
    }

誰かがここで私を助けてくれれば幸いです

4

1 に答える 1

1

使用しているキーボードがユーザー辞書を読み取る場合は、ドキュメントに記載されているように、resolver.insert.

デフォルトのキーボードを使用して手動でいくつかの単語を追加しました。新しい単語を使用するresolver.queryと、出力にリストされます。キーボードは新しい単語を辞書に追加しています。

その後、resolver.insert. 単語が辞書に追加され (resolver.query出力に表示されます)、キーボードの候補としても表示されます。

別のキーボード (Swiftkey など) に切り替えると、これらの単語は予測に使用されません。たぶん、別のキーボードを使用している可能性があります。

私の完全なコードは次のとおりです。

public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Get the TextView which will be populated with the Dictionary ContentProvider data.
        TextView dictTextView = (TextView) findViewById(R.id.dictionary_text_view);
        // Get the ContentResolver which will send a message to the ContentProvider
        ContentResolver resolver = getContentResolver();
        // Put a new word on the dictionary
        final Locale locale;
        locale = Locale.getDefault();
        final int COLUMN_COUNT = 3;
        ContentValues values = new ContentValues(COLUMN_COUNT);
        values.put(Words.WORD, "Quasimodo");
        values.put(Words.FREQUENCY, 250);
        values.put(Words.LOCALE, locale.toString());
        Uri result = resolver.insert(UserDictionary.Words.CONTENT_URI, values);

        // Get a Cursor containing all of the rows in the Words table
        // The word "Quasimodo" inserted will be shown
        Cursor cursor = resolver.query(UserDictionary.Words.CONTENT_URI, null, null, null, null);
        // Surround the cursor in a try statement so that the finally block will eventually execute
        try {
            dictTextView.setText("UserDictionary contains " + cursor.getCount() + " words\n");
            dictTextView.append("COLUMNS: " + Words._ID  + " - " + Words.FREQUENCY +
                    " - " + Words.WORD);
            int idColumn = cursor.getColumnIndex(UserDictionary.Words._ID);
            int frequencyColumn = cursor.getColumnIndex(UserDictionary.Words.FREQUENCY);
            int wordColumn = cursor.getColumnIndex(UserDictionary.Words.WORD);
            while (cursor.moveToNext()) {
                int id = cursor.getInt(idColumn);
                int frequency = cursor.getInt(frequencyColumn);
                String word = cursor.getString(wordColumn);
                dictTextView.append(("\n" + id + " - " + frequency + " - " + word));
            }
        } finally {
            cursor.close();
        }
    }
}

私のキーボードは、その後、挿入という単語を提案として表示します。

ここに画像の説明を入力

于 2015-10-04T21:34:47.423 に答える