天天看点

内容提供者(获取联系人信息和插入联系人)

一丶获取联系人的信息

点击获取联系人信息

public void click(View view){

        //获取内容解析器

        ContentResolver resolver = getContentResolver() ;

        //设定访问的uri(系统本机)

        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts") ;//联系人的id

        Uri datauri = Uri.parse("content://com.android.contacts/data") ;//联系人信息

        //查询所有联系人的id

        Cursor idCursor = resolver.query(uri, new String[]{"contact_id"}, null, null, null) ;

        while(idCursor.moveToNext()){

            String id = idCursor.getString(0) ;

            //根据id去data表中查询数据

            //注意:查询数据的时候其实是查询的是一个视图,在视图中将字段mimetype_id改成了mimetype, 在查询的时候注意改过来

            Cursor datacurcor = resolver.query(datauri, new String[]{"mimetype","data1"}, "raw_contact_id=?", new String[]{id}, null) ;

            Contact c = new Contact() ;//声明并实例化一个联系人信息对象

            while(datacurcor.moveToNext()){

                String type = datacurcor.getString(0) ;

                String data = datacurcor.getString(1) ;

                //根据mimetype的值来封装联系人具体的信息

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

        //数据封装完毕

    //显示到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;

        }

    }

注意:要在清单文件里面读取联系人权限配置权限

二丶插入一条联系人信息

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;

        }

        // 获取内容解析器

        ContentResolver resolver = getContentResolver();

        // 设定访问的uri

        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");

        Uri datauri = Uri.parse("content://com.android.contacts/data");

        // 查询所有联系人的id  //获取所有记录的个数     

      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表中插入数据

        //插入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() ;

    }

转载于:https://blog.51cto.com/2585211/1665223