android Contacts應用中不容易理解的點

來源:互聯網
上載者:User

 1. withValueBackReference

    protected void createContactEntry() {               ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();        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.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, "小明")                .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, "10086")                .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, "google@sina.com")                .withValue(ContactsContract.CommonDataKinds.Email.TYPE, "1")                .build());        try {            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);        } catch (Exception e) {            Log.e(TAG, "Exceptoin encoutered while inserting contact: " + e);        }    }

這裡withValueBackReference("column","index");第一個參數對應於資料庫中的列,第二個參數代表著回引的值。這個比較抽象,也就是說,大量操作資料庫時,index表示第幾個操作返回結果的id或是數量。

例如:上面的代碼withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);這個表示將ContactsContract.Data.RAW_CONTACT_ID的值設為

ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType()) .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName()) .build()

這個插入操作被執行完畢以後的uri中取的id的值,假設上面傳回值是"content://com.android.contacts/raw_contacts/5"這裡就是取5這個值,這裡是插入操作。

當然如果是更新操作,返回的結果就是更新的列數,ContactsContract.Data.RAW_CONTACT_ID的值也就是更新的列數。、

 

未完。。待續。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.