溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

內(nèi)容提供者(獲取聯(lián)系人信息和插入聯(lián)系人)

發(fā)布時(shí)間:2020-07-28 20:10:34 來(lái)源:網(wǎng)絡(luò) 閱讀:378 作者:秋寒526 欄目:移動(dòng)開發(fā)

一丶獲取聯(lián)系人的信息

點(diǎn)擊獲取聯(lián)系人信息

public void click(View view){
        //獲取內(nèi)容解析器
        ContentResolver resolver = getContentResolver() ;
        //設(shè)定訪問(wèn)的uri(系統(tǒng)本機(jī))
        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts") ;//聯(lián)系人的id
        Uri datauri = Uri.parse("content://com.android.contacts/data") ;//聯(lián)系人信息
        //查詢所有聯(lián)系人的id
        Cursor idCursor = resolver.query(uri, new String[]{"contact_id"}, null, null, null) ;
        while(idCursor.moveToNext()){
            String id = idCursor.getString(0) ;
            //根據(jù)id去data表中查詢數(shù)據(jù)
            //注意:查詢數(shù)據(jù)的時(shí)候其實(shí)是查詢的是一個(gè)視圖,在視圖中將字段mimetype_id改成了mimetype, 在查詢的時(shí)候注意改過(guò)來(lái)
            Cursor datacurcor = resolver.query(datauri, new String[]{"mimetype","data1"}, "raw_contact_id=?", new String[]{id}, null) ;
            Contact c = new Contact() ;//聲明并實(shí)例化一個(gè)聯(lián)系人信息對(duì)象
            while(datacurcor.moveToNext()){
                String type = datacurcor.getString(0) ;
                String data = datacurcor.getString(1) ;
                        
                //根據(jù)mimetype的值來(lái)封裝聯(lián)系人具體的信息
                if("vnd.android.cursor.item/email_v2".equals(type))
                    c.setEmail(data) ;
                if("vnd.android.cursor.item/im".equals(type))
                    c.setQq(data) ;
                if("vnd.android.cursor.item/phone_v2".equals(type))
                    c.setPhone(data) ;
                if("vnd.android.cursor.item/name".equals(type))
                    c.setName(data) ;
                if("vnd.android.cursor.item/postal-address_v2".equals(type))
                    c.setAddress(data) ;
            }
            datacurcor.close() ;
            list.add(c) ;
        }
        idCursor.close() ;
        //數(shù)據(jù)封裝完畢

    //顯示到listView中

        lv.setAdapter(new Myadapter()) ;
    }   
    private class Myadapter extends BaseAdapter{

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView tv = null ;
            if(convertView == null)
                tv = new TextView(MainActivity.this) ;
            else
                tv = (TextView) convertView ;
            
            tv.setTextSize(15) ;
            StringBuilder sb = new StringBuilder() ;
            Contact c = list.get(position) ;
            sb.append("姓名:" + c.getName() + " 電話:" + c.getPhone() + " 地址:" + c.getAddress() + " 郵箱:" + c.getEmail() + " QQ:" + c.getQq()) ;
            tv.setText(sb.toString()) ;
            return tv;
        }
    }

注意:要在清單文件里面讀取聯(lián)系人權(quán)限配置權(quán)限

二丶插入一條聯(lián)系人信息

public void click(View view) {
        // 拿到信息
        String name = etname.getText().toString();
        String phone = etphone.getText().toString();
        String email = etemail.getText().toString();

        if (TextUtils.isEmpty(name) || TextUtils.isEmpty(phone)
                || TextUtils.isEmpty(email)) {
            Toast.makeText(this, "信息必須都要填寫", 0).show();
            return;
        }

        /**
         * 插入數(shù)據(jù)的思路:
         *    1.在raw_contact表中查詢所有的記錄的個(gè)數(shù)
         *    2.給個(gè)數(shù)加1就是新的記錄的id
              3.給data表插入記錄
         */

        // 獲取內(nèi)容解析器
        ContentResolver resolver = getContentResolver();
        // 設(shè)定訪問(wèn)的uri
        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
        Uri datauri = Uri.parse("content://com.android.contacts/data");
        // 查詢所有聯(lián)系人的id  //獲取所有記錄的個(gè)數(shù)     

      Cursor idCursor = resolver.query(uri, new String[] { "contact_id" },
                null, null, null);
        int count = idCursor.getCount() ;
        idCursor.close() ;
        //插入記錄的id
        int id = count + 1 ;
        //向raw_contact插入id
        ContentValues values =  new ContentValues() ;
        values.put("contact_id", id) ;
        resolver.insert(uri, values) ;  //id就插入到表raw_contact中了
        
        //向data表中插入數(shù)據(jù)
        //插入name記錄
        ContentValues namevalues = new ContentValues() ;
        namevalues.put("mimetype", "vnd.android.cursor.item/name") ;
        namevalues.put("data1", name) ;
        namevalues.put("raw_contact_id",id) ;
        resolver.insert(datauri, namevalues) ;
        
        //插入電話
        ContentValues phonevalues = new ContentValues() ;
        phonevalues.put("mimetype", "vnd.android.cursor.item/phone_v2") ;
        phonevalues.put("data1", phone) ;
        phonevalues.put("raw_contact_id",id) ;
        resolver.insert(datauri, phonevalues) ;
        
        //插入郵箱
        ContentValues emailvalues = new ContentValues() ;
        emailvalues.put("mimetype", "vnd.android.cursor.item/email_v2") ;
        emailvalues.put("data1", email) ;
        emailvalues.put("raw_contact_id",id) ;
        resolver.insert(datauri, emailvalues) ;
        
        Toast.makeText(this, "插入成功", 0).show() ;
    }

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI