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

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

ContentProvider補充(獲取系統數據)

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

              之前稍微研究了如何創建并簡單使用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在线天堂| 国产精品一区二区性色av| 国产亚洲免费的视频看| 国产日韩欧美在线播放| 国产精品久久久久久久久久99| 国产精品欧美激情在线播放| 欧美大全免费观看电视剧大泉洋| 精品国产成人av| 国产精品成久久久久三级| 成人午夜在线影院| 日韩av在线网页| 亚洲女人天堂视频| 国产精品国内视频| 欧美日韩亚洲国产一区| 久久视频在线免费观看| 国产精品欧美一区二区三区奶水| 欧美在线观看一区二区三区| 亚洲成色777777女色窝| 欧美黄色小视频| 亚洲女人天堂色在线7777| 日韩成人av网址| 欧美成人免费大片| 国内偷自视频区视频综合| 亚洲成av人影院在线观看| 国产精品日韩欧美综合| 久久久久久欧美| 色噜噜久久综合伊人一本| 午夜精品美女自拍福到在线| 亚洲国产成人在线播放| 欧美做爰性生交视频| 国产精品第一第二| 国产精品成人久久久久| 亚洲老头同性xxxxx| 日韩电影中文字幕| 国产69精品久久久久9| 黄色成人在线免费| 国产精品丝袜久久久久久高清| 国产99久久精品一区二区永久免费| 亚洲欧美资源在线| 91免费国产网站| 亚洲裸体xxxx| 九九精品视频在线观看| 日韩中文字幕免费看| 久久亚洲综合国产精品99麻豆精品福利| 日韩精品极品在线观看播放免费视频| 精品国产一区二区三区在线观看| 91视频8mav| 国产欧美日韩高清| 亚洲色图欧美制服丝袜另类第一页| 久久天天躁狠狠躁老女人| 性欧美在线看片a免费观看| 欧美与黑人午夜性猛交久久久| 日韩av手机在线观看| 超碰91人人草人人干| 精品高清美女精品国产区| 国产精品h在线观看| 秋霞午夜一区二区| 美女扒开尿口让男人操亚洲视频网站| 欧美日韩中国免费专区在线看| 亚洲成年人在线播放| 91精品综合久久久久久五月天| 色七七影院综合| 538国产精品一区二区在线| 日韩国产激情在线| 国产精品精品国产| 一区二区在线免费视频| 欧美日韩国产黄| 九九热视频这里只有精品| 久久久久久久色| 日韩欧美在线播放| 国产精品视频成人| 久久伊人免费视频| 日韩电影中文字幕一区| 精品国产美女在线| 97精品一区二区视频在线观看| 亚洲国产精品va在线看黑人动漫| 成人黄色免费网站在线观看| 欧美日韩一区免费| 色妞久久福利网| 最近中文字幕2019免费| 国语自产精品视频在线看| 欧美一区深夜视频| 亚洲嫩模很污视频| 久久久精品美女| 欧美日韩高清在线观看| 欧美不卡视频一区发布| 日本欧美中文字幕| 日韩欧美aaa| 日韩av影片在线观看| 欧美一级成年大片在线观看| 国产精品福利观看| 中文亚洲视频在线| 中文日韩在线视频| 美女福利精品视频| 亚洲国产成人91精品| 亚洲色图色老头| 亚洲视频精品在线| 精品国产精品三级精品av网址| 性亚洲最疯狂xxxx高清| 91欧美日韩一区| 91夜夜未满十八勿入爽爽影院| 国产精品福利在线| 成人国内精品久久久久一区| 97免费在线视频| 欧美制服第一页| 2020欧美日韩在线视频| 精品久久久久久亚洲国产300| 久久天天躁狠狠躁夜夜av| 亚洲欧美国产精品va在线观看| 久久久久久有精品国产| 最好看的2019的中文字幕视频| 日本精品久久久久久久| 91在线视频成人| 欧美精品久久久久久久| www.日韩视频| 26uuu国产精品视频| 岛国av在线不卡| 亚洲偷欧美偷国内偷| 欧美成人sm免费视频| 国产欧美日韩免费| 欧美老女人在线视频| www.日韩av.com| 久久免费精品日本久久中文字幕| 亚洲久久久久久久久久| 亚洲国产精品嫩草影院久久| 正在播放亚洲1区| 欧美做受高潮1| 国产99久久精品一区二区 夜夜躁日日躁| 欧洲亚洲在线视频| 国产精品视频播放| 成人亚洲激情网| 日韩视频免费在线| 久久综合色88| 在线成人激情视频| 91精品国产成人www| 国产精品毛片a∨一区二区三区|国| 456亚洲影院| 日本亚洲精品在线观看| 成人福利网站在线观看11| 精品在线观看国产| 北条麻妃一区二区在线观看| 国产一区二区三区视频在线观看| 国产国产精品人在线视| 在线视频一区二区| 欧美激情xxxx| 日韩av在线网址| 亚洲美女免费精品视频在线观看| 欧美丰满片xxx777| 美女啪啪无遮挡免费久久网站| 久久久久国产一区二区三区| 亚洲天堂av高清| 久久久久国产精品免费网站| 久久久久亚洲精品成人网小说| 日韩中文视频免费在线观看| 国产精品成人一区二区| 中文字幕av一区中文字幕天堂| 日韩欧美国产网站| 欧美电影免费观看| 国产亚洲视频中文字幕视频| 91久久精品美女| 国产精品久久久久免费a∨|