2011-09-24 73 views
0

我想添加從中已經與簡單的XML序列化框架的XML文件的一些接觸,有一個奇怪的錯誤:問題添加聯繫人信息

ERROR/ContentProviderOperation(10727): mType: 1, mUri: content://com.android.contacts/data, mSelection: null, mExpectedCount: null, mYieldAllowed: false, mValues: data1=Karl Koffi Marx Antoine Carter mimetype=vnd.android.cursor.item/name, mValuesBackReferences: raw_contact_id=1, mSelectionArgsBackReferences: null

這是代碼

ContactList contactList = serializer.read(ContactList.class, xmlFile); 
int nbreContacts = contactList.contact.length; 
for(int i=0;i<nbreContacts;i++) 
{ 
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
    .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
    .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
    .build()); 
id = contactList.contact[i].getId(); 
name = contactList.contact[i].getName(); 
addName(Integer.parseInt(id), name); 
flush(c); 
} 

private void addName(int contactId, String displayName) 
{ 
    if(displayName != null) 
    { 
     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
     .withValueBackReference(Data.RAW_CONTACT_ID, contactId) 
     .withValueData.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
     .withValue(CommonDataKinds.StructuredName.DISPLAY_NAME, displayName) 
     .build()); 
    }     
} 

private void flush(Context c) 
{  
    ContentResolver cr = c.getContentResolver();   
    try 
    { 
    cr.applyBatch(ContactsContract.AUTHORITY, ops); 
    } 
    catch (RemoteException e) 
    { 
     Log.e("Writing", "Remote Error writting data ", e); 
    } 
    catch (OperationApplicationException e) 
    {  
     Log.e("Writing", "OAE Error writting data", e); 
    } 
} 

任何幫助將不勝感激。

回答

0

感謝@Reno在聊天室。

withValueBackReference(Data.RAW_CONTACT_ID, contactId)更改爲.withValueBackReference(Data.RAW_CONTACT_ID, 0) 我首先想到RAW_CONTACT_ID是指聯繫人ID,這就是爲什麼我錯了。問題解決了,希望能幫助別人:)