1

J'ai cherché et examiné ce problème sur le Web, mais n'a pas obtenu de réponse claire. J'ai ajouté les mots au dictionnaire utilisateur en utilisant le fournisseur de contenu comme le android documentation indique les mots est ajouté, mais après que lorsque je tape sur le clavier, je ne vois pas le mot figurant sur les suggestions dans la vue des candidats que d'autres mots que nous tapons apparaissent là la prochaine fois. J'apprécierais vraiment une réponse complète à ce problème car beaucoup de gens le demandent sur le net et ne reçoivent pas de réponse. Je l'ai essayéComment ajouter de nouveaux mots au dictionnaire utilisateur android afin qu'ils apparaissent sur l'affichage des candidats lors de la saisie

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); 
    } 

apprécieraient si quelqu'un me aide ici

+0

Vous avez trouvé une solution ...? –

Répondre

0

Si le clavier que vous utilisez lit le dictionnaire utilisateur, vous devriez être en mesure d'ajouter des mots au dictionnaire comme dit la documentation, en utilisant le resolver.insert. J'ai ajouté quelques mots manuellement en utilisant le clavier par défaut. En utilisant le resolver.query les nouveaux mots sont listés sur la sortie. Le clavier ajoute de nouveaux mots au dictionnaire. Par la suite, j'ai ajouté un seul mot au dictionnaire (Quasimodo) en utilisant le code resolver.insert. Le mot a été ajouté au dictionnaire (il apparaît dans la sortie resolver.query) et il apparaît également comme une suggestion sur le clavier.

Si je passe à un autre clavier (Swiftkey par exemple), ces mots ne sont pas utilisés pour la prédiction. Peut-être que vous utilisez un clavier différent.

Mon code complet est:

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(); 
     } 
    } 
} 

Mon clavier affiche le mot insérer comme une suggestion par la suite.

enter image description here

Questions connexes