1

電話のすべての連絡先を取得する ListView が 1 つあります。ListView に 1 つのボタンを配置し、そのボタンをクリックすると連絡先をお気に入りに追加し、もう一度クリックするとお気に入りから削除する必要があります。
ここで、お気に入りのタグで新しい連絡先を追加するコードを見つけました.しかし、ボタンをクリックしてこれを行う方法.私はこのコードで試しました:

コード:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
        int rawContactInsertIndex = ops.size();

        ops.add(ContentProviderOperation.newUpdate(RawContacts.CONTENT_URI)
                .withValue(RawContacts.ACCOUNT_TYPE, null)
                .withValue(RawContacts.ACCOUNT_NAME, null)
                .withValue(RawContacts.STARRED, true).build());
        ops.add(ContentProviderOperation
                .newUpdate(ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID,
                        rawContactInsertIndex)
                .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
                .withValue(Phone.NUMBER, "91-0000000002").build());
        ops.add(ContentProviderOperation
                .newUpdate(Data.CONTENT_URI)
                .withValueBackReference(Data.RAW_CONTACT_ID,
                        rawContactInsertIndex)
                .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
                .withValue(StructuredName.DISPLAY_NAME, "Maulik patel").build());

このコードを使用すると、すべての連絡先がお気に入りに追加され
ます

4

2 に答える 2

2

ここで、特定の連絡先をお気に入りにするために最終的に機能するのは何ですか。

ContentValues values = new ContentValues();
        String[] fv = new String[] { "juned" };
        values.put(Contacts.STARRED, 1);
        getContentResolver().update(Contacts.CONTENT_URI, values,
                Contacts.DISPLAY_NAME + "= ?", fv);

unfavorite の 1 を 0 に変更するだけです。

于 2012-11-22T12:28:02.880 に答える
2

連絡先名の代わりに特定の連絡先 ID を使用してお気に入りの連絡先を追加/削除する必要があったため、juned のコードを変更しました。

int contactId = 10;    // some contact's ID

ContentValues values = new ContentValues();
values.put(ContactsContract.Contacts.STARRED, 1);
getActivity().getContentResolver().update(ContactsContract.Contacts.CONTENT_URI, values,
    ContactsContract.Contacts._ID + "= ?", new String[] { String.valueOf(contactId) });

違いは、 を に変更するだけDISPLAY_NAMEです_ID

于 2014-02-27T13:29:08.873 に答える