亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ContentProvider補充(獲取系統數據)

2019-11-10 17:19:16
字體:
來源:轉載
供稿:網友

              之前稍微研究了如何創建并簡單使用ContentPRovider來實現共享數據功能。今天補充一下系統提供的ContentProvider是怎么一回事.。當然都是一樣的原理,最重要的就是所提供的的網址不同,也就是uri不同。系統中數據無外乎就是一些聯系人,信息等,這里在網上找到一些關于聯系人與短信的uri,在這里看一下:

     

我們能看到在微信或者QQ上有通過訪問手機上聯系人來添加好友,就相當于直接在手機這個系統中獲取數據。今天研究了下,發現了它們有兩種展現方式。

一是直接進入聯系人列表然后將所選聯系人數據帶過來,二呢是將聯系人列表里的數據綁進自己的頁面。哪個更好呢,當然就視情境而定了。只是哪個更簡單

到是可以探究一下。

先說第一種:

         用一個ListView 裝數據,首先得寫一個自定義的適配器ContactListAdapter,聯系人儲存在手機這個數據庫中,數據字段繁多,我們要想取它得需要為它創建個實體類,接下來也就上次獲取數據一樣的步驟,具體看代碼

//綁定聯系人點擊事件public void getAllContacts(View view){    setAdapter(list);}/** * 初始化數據庫查詢參數 */private void init() {    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; // 聯系人Uri;    // 查詢的字段    String[] projection = { ContactsContract.CommonDataKinds.Phone._ID,            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,            ContactsContract.CommonDataKinds.Phone.DATA1, "sort_key",            ContactsContract.CommonDataKinds.Phone.CONTACT_ID,            ContactsContract.CommonDataKinds.Phone.PHOTO_ID,            ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY };    // 按照sort_key升序查詢    asyncQueryHandler.startQuery(0, null, uri, projection, null, null,            "sort_key COLLATE LOCALIZED asc");}/** * * @author Administrator * */private class MyAsyncQueryHandler extends AsyncQueryHandler {    public MyAsyncQueryHandler(ContentResolver cr) {        super(cr);    }    @Override    protected void onQueryComplete(int token, Object cookie, Cursor cursor) {        if (cursor != null && cursor.getCount() > 0) {            contactIdMap = new HashMap<Integer, ContactBean>();            list = new ArrayList<ContactBean>();            cursor.moveToFirst(); // 游標移動到第一項            for (int i = 0; i < cursor.getCount(); i++) {                cursor.moveToPosition(i);                String name = cursor.getString(1);                String number = cursor.getString(2);                String sortKey = cursor.getString(3);                int contactId = cursor.getInt(4);                Long photoId = cursor.getLong(5);                String lookUpKey = cursor.getString(6);                if (contactIdMap.containsKey(contactId)) {                    // 無操作                } else {                    // 創建聯系人對象                    ContactBean contact = new ContactBean();                    contact.setDesplayName(name);                    contact.setPhoneNum(number);                    contact.setSortKey(sortKey);                    contact.setPhotoId(photoId);                    contact.setLookUpKey(lookUpKey);                    Log.i("ccc",photoId+"");                    list.add(contact);                    contactIdMap.put(contactId, contact);                }            }        }        super.onQueryComplete(token, cookie, cursor);    }}private void setAdapter(final List<ContactBean> list) {    adapter = new ContactListAdapter(this, list);    contactList.setAdapter(adapter);}

第二種:

          在這里我們就不需要用ListView來裝數據,只需用一個文本框接收從聯系人列表傳過來的值就ok了。那么,當然我們也不需要再自定義一個適配器,似乎相對來

說這一種方法簡單一點了

//跳到聯系人列表點擊事件public void jumpContacts(View view){    Uri uri=Uri.parse("content://contacts/people");    Intent intent=new Intent(Intent.ACTION_PICK,uri);    startActivityForResult(intent,0);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    switch (requestCode){        case 0:            if(data==null)            {                return;            }            //處理返回的data,獲取選擇的聯系人信息            Uri uri=data.getData();            String[] contacts=getPhoneContacts(uri);            s = contacts[0]+":"+contacts[1];            tv_test_contacts.setText(s);            break;    }    super.onActivityResult(requestCode, resultCode, data);}private String[] getPhoneContacts(Uri uri){    String[] contact=new String[2];    //得到ContentResolver對象    ContentResolver cr = getContentResolver();    //取得電話本中開始一項的光標    Cursor cursor=cr.query(uri,null,null,null,null);    if(cursor!=null)    {        cursor.moveToFirst();        //取得聯系人姓名        int nameFieldColumnIndex=cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);        contact[0]=cursor.getString(nameFieldColumnIndex);        //取得電話號碼        String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));        Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);        if(phone != null){            phone.moveToFirst();            contact[1] = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));        }        phone.close();        cursor.close();    }    else    {        return null;    }    return contact;}

通過代碼量來看,好像第二種方法較簡單了一點,少了將手機數據庫中所有的數據獲取并綁定出來的這一步,當然早就說了視情境而定,各人有各人的看法了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕精品网| 亚洲免费伊人电影在线观看av| 欧美视频在线看| 国产成人在线亚洲欧美| 亚洲男人的天堂在线| …久久精品99久久香蕉国产| 成人高h视频在线| 91极品视频在线| 日韩亚洲成人av在线| 在线播放国产一区中文字幕剧情欧美| 亚洲女人初尝黑人巨大| 国产精品久久中文| 欧美乱大交xxxxx| 日韩免费观看网站| 成人免费看黄网站| 国产精品久久久久99| 国产欧美va欧美va香蕉在| 中文字幕精品久久久久| 欧美老女人性视频| 久久99青青精品免费观看| 国产成人精品在线播放| 福利视频第一区| 欧美中文在线免费| 成人av电影天堂| 亚洲日韩第一页| 亚洲精品黄网在线观看| 中文字幕精品久久| 日韩精品极品在线观看播放免费视频| 久久久久久久激情视频| 国产精品视频导航| 成人黄色av播放免费| 国产精品美女午夜av| 欧美综合激情网| 欧美成年人视频网站欧美| 亚洲图中文字幕| 亚洲免费小视频| 精品国内产的精品视频在线观看| 日韩av不卡在线| 精品视频久久久久久| 97国产精品视频| 日韩午夜在线视频| 亚洲色图综合久久| 欧美精品久久久久久久免费观看| 欧美在线视频网站| 欧美巨乳美女视频| 国产福利视频一区| 久久精品中文字幕免费mv| 国产日韩精品综合网站| 人人澡人人澡人人看欧美| 久久精品国产电影| 久久久视频免费观看| 91国偷自产一区二区三区的观看方式| 国产丝袜一区二区三区免费视频| 韩国欧美亚洲国产| 国产偷国产偷亚洲清高网站| 国产精品久久久久久网站| 亚洲 日韩 国产第一| 亚洲一区二区福利| 热门国产精品亚洲第一区在线| 97人人爽人人喊人人模波多| 午夜精品久久久久久久久久久久| 成人网中文字幕| 久久天天躁狠狠躁夜夜躁2014| 欧美成人免费播放| 91国语精品自产拍在线观看性色| 日韩精品视频观看| 欧美国产日韩xxxxx| 国产精品成人va在线观看| 国产一区二区三区18| 精品国偷自产在线视频99| 国产综合福利在线| 黑人极品videos精品欧美裸| 久久深夜福利免费观看| 亚洲国产天堂久久综合| 欧美成人精品在线观看| 国产日产欧美a一级在线| 欧美精品video| 国产91在线视频| 尤物九九久久国产精品的特点| 久久精品久久久久久| 欧美性猛交xxxx免费看久久久| 精品一区二区三区电影| 国产精品久久久av久久久| 久久久噜久噜久久综合| 欧美国产第一页| 91国产高清在线| 欧美老肥婆性猛交视频| 欧美激情精品久久久久久蜜臀| 亚洲国产成人在线播放| 日韩亚洲国产中文字幕| 国产aⅴ夜夜欢一区二区三区| 91在线观看免费高清完整版在线观看| 欧美日韩亚洲精品一区二区三区| 久久最新资源网| 51久久精品夜色国产麻豆| 亚洲男女性事视频| 亚洲欧美三级在线| 久久久国产精彩视频美女艺术照福利| 上原亚衣av一区二区三区| 在线免费观看羞羞视频一区二区| 欧美性极品少妇精品网站| 国产啪精品视频| 亚洲欧洲在线视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 91精品国产综合久久香蕉922| 美日韩丰满少妇在线观看| 亚洲欧美在线x视频| 日韩在线中文字幕| 久久99热这里只有精品国产| 国产午夜精品一区理论片飘花| 91在线看www| 日韩av男人的天堂| 精品亚洲一区二区三区| 91在线观看欧美日韩| 久久久国产一区二区三区| 亚洲人成电影网站色| 国产精品久久久久久久av电影| 亚洲精品福利在线| 久久手机免费视频| 国语自产精品视频在线看| 91天堂在线视频| 国产情人节一区| 亚洲性69xxxbbb| 亚洲国产天堂久久国产91| 精品久久久久久久久久| 亚洲欧美一区二区精品久久久| 亚洲成色777777在线观看影院| 国产精品1区2区在线观看| 色中色综合影院手机版在线观看| 国产精品美女呻吟| 亚州精品天堂中文字幕| www.久久久久久.com| 午夜精品久久久久久久白皮肤| 中文在线资源观看视频网站免费不卡| 亚洲精品二三区| 久久久99免费视频| 一道本无吗dⅴd在线播放一区| 日韩极品精品视频免费观看| 日韩大陆欧美高清视频区| 欧美在线一区二区视频| 久热精品视频在线免费观看| 亚洲国产高清高潮精品美女| 91精品国产自产在线老师啪| 中文字幕9999| 国产精品电影一区| 国产91ⅴ在线精品免费观看| 国产精品流白浆视频| 成人两性免费视频| 亚洲专区国产精品| 亚洲精品欧美日韩专区| 色午夜这里只有精品| 亚洲国产私拍精品国模在线观看| 国产精品免费久久久久影院| 欧美另类极品videosbest最新版本| 欧美激情在线一区| 黄色一区二区在线观看| 中文国产亚洲喷潮| 97色在线观看免费视频| 亚洲免费福利视频| 97av在线影院| 这里只有视频精品| 福利视频导航一区| 丝袜美腿亚洲一区二区| 亚洲成色777777女色窝|