3

Android で特定の連絡先 ID を持つ rawcontact を作成しようとしているため、同じ contactid (rawcontactid ではない) を持つ他の rawcontacts にリンクされます。

問題は、Contact_ID を ContentProviderOperations に挿入できないことです。次のコードを使用すると、「挿入に失敗しました」が返されます

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    int id = (int) contactId;

    String condition = Data.RAW_CONTACT_ID + "=?";
    String[] parameters = { "" + id };

    try {

        String accountName = account.name;
        String accountType = account.type;
        ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
                .withValue(RawContacts.ACCOUNT_TYPE, accountType)
                .withValue(RawContacts.ACCOUNT_NAME, accountName).build());
        ops.add(getAccountGroupOperation(account));

        ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
                .withValueBackReference(Data.RAW_CONTACT_ID, 0)
                .withValue(Data.CONTACT_ID, "" + id)
                .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
                .withValue(StructuredName.DISPLAY_NAME, contact.getName())
                .build()); 
        MyApplication.getAppContext().getContentResolver()
                .applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        ...
    }

私は何を間違っていますか?

4

2 に答える 2

3

これを行うことは可能ですが、希望する方法ではありません。タイプを TYPE_KEEP_TOGETHER に設定して、未加工の連絡先 ID を両方とも AggregationExceptions テーブルに追加することで、連絡先アプリケーションを 2 つの未加工の連絡先に結合させることができます。

http://developer.android.com/reference/android/provider/ContactsContract.AggregationExceptions.html

于 2012-01-15T09:34:21.620 に答える
0

これはできません。Androidの連絡先アグリゲーターは、生の連絡先を連絡先に自動的に集約します。未加工の連絡先を連絡先に割り当てることを心配する必要はありません。

于 2012-01-10T22:31:11.170 に答える