Ho aggiunto alcuni contatti non elaborati a un account che ho creato. Qualcuno sa come posso accedere ai suoi campi dati?Accesso ai dati di contatto non elaborati
Ecco come ho aggiunto il contatto:
Log.i(TAG, "Adding contact: " + username);
ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
// create the contact
ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
builder.withValue(RawContacts.ACCOUNT_NAME, account.name);
builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);
builder.withValue(RawContacts.SYNC1, username);
operationList.add(builder.build());
// set display name
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
operationList.add(builder.build());
// set profile data
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.net.myapp.android.profile");
builder.withValue(ContactsContract.Data.DATA1, username);
builder.withValue(ContactsContract.Data.DATA2, context.getString(R.string.app_name) + " Profile");
builder.withValue(ContactsContract.Data.DATA3, "View profile");
operationList.add(builder.build());
Il cursore che uso per ottenere i miei contatti è:
private Cursor getContactsCursor(CharSequence constraint) {
Uri uri = RawContacts.CONTENT_URI.buildUpon().appendQueryParameter(RawContacts.ACCOUNT_NAME, getString(R.string.app_name)).appendQueryParameter(RawContacts.ACCOUNT_TYPE, getString(R.string.ACCOUNT_TYPE)).build();
String[] projection = null;//new String[] { ContactsContract.Contacts.DISPLAY_NAME };
String selection = null;
if (constraint != null && constraint.length() > 0)
selection = ContactsContract.Contacts.DISPLAY_NAME + " LIKE '%" + constraint + "%'" ;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
Cursor cursor = getContentResolver().query(uri, projection, selection, null , sortOrder);
return cursor;
}
Purtroppo, ho bisogno di campo Data1, che non è uno del cursore colonne. Immagino che il problema sia con RawContacts.CONTENT_URI Uri. Cosa dovrei usare invece?
[Hai provato questo] (http: //stackoverflow.com/a/5372302/940096) – Praveenkumar