मैंने this प्रश्न और उत्तर देखा, लेकिन फोन की जानकारी (और यहां तक कि ईमेल) जोड़ना अभी भी संपर्क जानकारी को ठीक से एकत्र नहीं करता है (जब मैं लोग ऐप की जांच करता हूं, तो मैं एक ही नाम के तहत कई प्रविष्टियां देख सकता हूं)।प्रोग्रामेटिक रूप से उन्हें जोड़ते समय आप संपर्कों को सही तरीके से कैसे प्राप्त करते हैं?
यहां कोड है जिसका उपयोग मैं परीक्षण करने के लिए करता हूं।
//get the account
Account acct = null;
Account[] accounts = AccountManager.get(getContext()).getAccounts();
for (Account acc : accounts){
acct = acc;
}//assuming there's only one account in there (in my case I know there is)
//loop a few times, creating a new contact each time. In theory, if they have the same name they should aggregate
for(int i=0; i<3; i++){
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, acct.type)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, acct.name)
.withValue(ContactsContract.RawContacts.AGGREGATION_MODE, ContactsContract.RawContacts.AGGREGATION_MODE_DEFAULT)
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "ContactName")
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "1234567890")
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 1)
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, "[email protected]")
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, 1)
.build());
try{
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
catch (Exception e) {
Log.e("Contacts", "Something went wrong during creation! " + e);
e.printStackTrace();
}
}
क्या आपने पाया है कि जेनरेट किए गए संपर्कों को कैसे लिंक किया जाए, भले ही उनके नाम अलग हों? –
@androiddeveloper क्षमा करें मैंने इस पर काम करना बंद कर दिया और कभी भी अच्छा जवाब नहीं मिला – Matt
ठीक है, मुझे लगता है कि मुझे यह आपके नमूने का उपयोग करके काम कर रहा है, इसलिए मैंने एक उत्तर पोस्ट किया है। बात यह है कि इसने मुझे उन प्रश्नों के बारे में सोचा जो मुझे नहीं पता। –