开发者

Trying to add a value into the Contact

I have this code:

String cName = name.getText().toString();
String cPhone = phone.getText().toString();
String cMail = email.getText().toString();
int cPhoneType = mContactPhoneTypes.get(mContactPhoneTypeSpinner.getSelectedItemPosition());
int cEmailType = mContactEmailTypes.get(mContactEmailTypeSpinner.getSelectedItemPosition());

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

ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType()).withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName()).build());  
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rowContactInsertIndex).withValue(ContactsContract.Data.DATA1,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,cName).build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rowContactInsertIndex).withValue(ContactsContract.Data.DATA1, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, cPhone).wit开发者_StackOverflow社区hValue(ContactsContract.CommonDataKinds.Phone.TYPE, cPhoneType).build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rowContactInsertIndex).withValue(ContactsContract.Data.DATA1, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.Email.DATA, cMail).withValue(ContactsContract.CommonDataKinds.Email.TYPE, cEmailType).build());

try {
    ContentProviderResult[] res =  getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch(Exception e) {
    Context context = getApplicationContext();
    CharSequence txt = getString(R.string.contactCreationFailure);
    Toast.makeText(context, txt, Toast.LENGTH_LONG).show();
}

But I'm getting the following error:

android.database.sqlite.SQLiteException: table raw_contacts has no column named data1: , while compiling: INSERT INTO raw_contacts(contact_id, data1, raw_contact_id) VALUES(?, ?, ?);

Any ideas? Thanks in advance.


It would appear that you're trying to insert into the "raw contacts" table (ContactsContract.RawContacts), but using a column name (ContactsContract.Data.DATA1) related to the ContactsContracts.Data table. I'm not an Android developer, but this page on ContactsContract may be useful. Basically you want to make sure you're inserting into the right table(s) with the right column(s).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜