Ajout de lignes dans Cursor manuellement

J'ai un tableau de numéros de téléphone et je veux obtenir le contact correspondant noms à partir de la base de données de contacts.

Dans le tableau des numéros de téléphone, j'ai aussi quelques numéros qui ne sont pas enregistrées avant de la base de données de contact. Par exemple;

  • 3333333 -> Tim
  • 5555555 -> Jim
  • 1111111 -> inconnu

J'ai le tableau contenant les numéros de téléphone indiqué ci-dessus, à savoir phoneArr.

int size=phoneArr.size();
if(size>0){
        Cursor[] cursors=new Cursor[size];
        for(int i=0;i<size;i++){
            Uri contactUri1 = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneArr.get(i)));
            cursors[i] = getContentResolver().query(contactUri1, PEOPLE_PROJECTION, null, null, " _id asc limit 1");
        }
        Cursor phones=new MergeCursor(cursors);

téléphones.getCount() retourne la valeur 2 dans le scénario ci-dessus. Lorsque le numéro de téléphone n'apparaît pas dans la liste des contacts, le curseur se transforme en vide et en quelque sorte quand je les fusionner elle ne contribue pas du tout. Ce que je veux, c'est avoir un curseur comme suit

Curseur téléphones -> {Tim, Jim, 1111111}

Je pense que je peux le faire en ajoutant la ligne manuellement comme suit:

Uri contactUri1 = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneArr.get(i)));
cursors[i] = getContentResolver().query(contactUri1, PEOPLE_PROJECTION, null, null, " _id asc limit 1");
if(cursors[i].getCount()==0)
    //add the phone number manually to the cursor

Comment puis-je y parvenir?

Ici est la PEOPLE_PROJECTION

private static final String[] PEOPLE_PROJECTION = new String[] {
    ContactsContract.PhoneLookup._ID,
    ContactsContract.PhoneLookup.DISPLAY_NAME,
    ContactsContract.PhoneLookup.NUMBER
};

source d'informationauteur 0x5f3759df