Как отобразить значок несколько раз в контактных данных для значка моего приложения, такого как WhatsApp

#android-contentprovider #android-contacts #android-syncadapter

#android-contentprovider #android-контакты #android-syncadapter

Вопрос:

Я пытаюсь показать несколько строк, поскольку мое приложение также поддерживает службы чата и звонков. Я хочу показать то же самое, что делает whatsap, как показано на рисунке ниже.

Я внедрил адаптер синхронизации и все остальное, используя некоторую помощь из разных блогов. Я успешно добавил одну строку, но мне нужно несколько строк, поскольку мы можем видеть whatsap на этой картинке. Я хочу показать несколько строк, как показано на рисунке.

Пожалуйста, посмотрите это для лучшего понимания

Для отображения только одной строки я использовал приведенный ниже код.

 ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
            builder.withValue(RawContacts.ACCOUNT_NAME, Constants.ACCOUNT_NAME);
            builder.withValue(RawContacts.ACCOUNT_TYPE, Constants.ACCOUNT_TYPE);
            builder.withValue(RawContacts.SYNC1, contact.name);
            ops.add(builder.build());
  builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
            builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
            builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/com.example.ajay.contacts_4");
builder.withValue(ContactsContract.Data.DATA1, contact.name);
    builder.with Value(ContactsContract.Data.DATA2, "SyncProviderDemo Profile");
  builder.withValue(ContactsContract.Data.DATA3, "View profile");
            ops.add(builder.build());


            try {
                resolver.applyBatch(ContactsContract.AUTHORITY, ops);
            } catch (Exception e) {
                e.printStackTrace();
            }
  

Ответ №1:

Я вставлял только один раз, используя ContentProviderOperation.Новое добавление, как вы можете видеть в вопросах. Но когда я добавляю несколько раз для одного и того же контакта, а затем применяю пакет. Тогда один контакт содержит несколько строк.

builder = ContentProviderOperation.newInsert (ContactsContract.Data.CONTENT_URI); builder.с обратным значением (ContactsContract.Data.RAW_CONTACT_ID, 0); builder.с значением (ContactsContract.Data.MIMETYPE, «vnd.android.cursor.item / com.example.ajay.contacts_4»); builder.withValue (ContactsContract.Data.DATA1, contact.name ); конструктор.со значением (ContactsContract.Data.DATA2, «Профиль SyncProviderDemo»); builder.со значением (ContactsContract.Data.DATA3, «Вызов» номер); ops.add (builder.build());

builder = ContentProviderOperation.newInsert (ContactsContract.Data.CONTENT_URI); builder.Со значением обратной ссылки (ContactsContract.Data.RAW_CONTACT_ID, 0); builder.Со значением (ContactsContract.Data.MIMETYPE, «vnd.android.cursor.item / com.example.ajay.contacts_4»); builder.withValue (ContactsContract.Data.DATA1, contact.name ); конструктор.со значением (ContactsContract.Data.DATA2, «Профиль SyncProviderDemo»); builder.со значением (ContactsContract.Data.DATA3, «Сообщение» номер); ops.add (builder.build()); попробуйте { resolver.applyBatch (ContactsContract.ПОЛНОМОЧИЯ, операции); } catch (исключение e) { e.printStackTrace(); }