android--(联系人提供者实践)

来源:互联网 发布:php手机论坛 编辑:程序博客网 时间:2024/06/03 19:28

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

/** * 添加联系人 */public class ContactsActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_contacts);    }    /**     * 添加联系人     * @param view     */    public void addClick(View view) {        ContentResolver cr = this.getContentResolver();        //执行一个空值插入,目的是获取系统返回的rawContactId        ContentValues values = new ContentValues();        Uri uri = cr.insert(ContactsContract.RawContacts.CONTENT_URI, values);//在contacts表中插入一行空列        long _id = ContentUris.parseId(uri);//获取插入的id        //插入姓名数据        values.clear();        values.put(ContactsContract.Data.RAW_CONTACT_ID, _id);//在 data 表中插入id        values.put(ContactsContract.Data.MIMETYPE,                ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);        values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "jack");        cr.insert(ContactsContract.Data.CONTENT_URI, values);        //插入电话数据        values.clear();        values.put(ContactsContract.Data.RAW_CONTACT_ID, _id);        values.put(ContactsContract.Data.MIMETYPE,                ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);        values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "00900");        values.put(ContactsContract.CommonDataKinds.Phone.TYPE,                ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);        cr.insert(ContactsContract.Data.CONTENT_URI, values);        Toast.makeText(this, "记录已添加", Toast.LENGTH_LONG).show();    }    /**     * 删除联系人     * @param view     */    public void deleteClick(View view) {        ContentResolver cr = this.getContentResolver();        System.out.print(ContactsContract.Contacts.CONTENT_URI.toString() + "/3");        Uri uri = Uri.parse("content://com.android.contacts/contacts/3");        cr.delete(uri, null, null);        Toast.makeText(this, "记录已删除", Toast.LENGTH_SHORT).show();    }    /**     * 更新联系人     * @param vied     */    public void updateClick(View vied) {        ContentResolver cr = this.getContentResolver();        ContentValues values = new ContentValues();        values.put(ContactsContract.Data.MIMETYPE,                ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);        values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "4445");        values.put(ContactsContract.CommonDataKinds.Phone.TYPE,                ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);        cr.update(ContactsContract.Data.CONTENT_URI, values, "_id=1", null);        Toast.makeText(this, "_id=1的记录已更新", Toast.LENGTH_SHORT).show();    }    //查询联系人    public void queryClick(View view) {        //获取接口        ContentResolver contentResolver = this.getContentResolver();        String id = null;        String mimeType = null;        //只需要从Contacts中获取Id,其他的都可以不要,通过查看上面编译的SQL语句,可以看出将第二个参数        //设置为Null ,默认返回的列非常多,是一种资源浪费        //查询 contacts表 查询出 id号        Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts._ID}, null, null, null);        while (cursor.moveToNext()) {            id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));            //从一个cursor获取所有的信息            //查询 data表 查询 id,            Cursor contactInfoCursor = contentResolver.query(                    ContactsContract.Data.CONTENT_URI,                    new String[]{ContactsContract.Data.CONTACT_ID,//查询联系人的id                            ContactsContract.Data.MIMETYPE,//类型                            ContactsContract.Data.DATA1,//名字等信息                            ContactsContract.Data.DATA15},//图片                    ContactsContract.Data.CONTACT_ID + "=" + id,                    null, null);            while (contactInfoCursor.moveToNext()) {                mimeType = contactInfoCursor.getString(                        contactInfoCursor.getColumnIndex(ContactsContract.Data.MIMETYPE));                String value = contactInfoCursor.getString(                        contactInfoCursor.getColumnIndex(ContactsContract.Data.DATA1));                byte[] photo = contactInfoCursor.getBlob(                        contactInfoCursor.getColumnIndex(ContactsContract.Data.DATA15));                if (mimeType.contains("/name")) {                    System.out.print("姓名=" + value);                } else if (mimeType.contains("/email")) {                    System.out.print("邮箱=" + value);                } else if (mimeType.contains("/im")) {                    System.out.print("聊天QQ账号=" + value);                } else if (mimeType.contains("/phone")) {                    System.out.print("电话=" + value);                } else if (mimeType.contains("/postal")) {                    System.out.print("邮编=" + value);                } else if (mimeType.contains("/photo")) {                    System.out.print("照片=" + photo);//图片使用ImageView来显示                } else if (mimeType.contains("/group")) {                    System.out.print("组=" + value);                } else if (mimeType.contains("/postal-address_v2")) {                    System.out.print("地址=" + value);                }            }            contactInfoCursor.close();        }        cursor.close();    }}
0 0
原创粉丝点击