6

作成したアカウントに生の連絡先をいくつか追加しました。データフィールドにアクセスする方法を知っている人はいますか?

これは私が連絡先を追加した方法です:

    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());

連絡先を取得するために使用するカーソルは次のとおりです。

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;
}

残念ながら、カーソル列の 1 つではない Data1 フィールドが必要です。問題は RawContacts.CONTENT_URI Uri にあると思います。代わりに何を使用すればよいですか?

4

0 に答える 0