android联系人二维码

手机自带联系人二维码携带的信息是vcard信息。一般的二维码扫描后会自动识别为联系人信息,跳转名片添加页面。

以下是直接通过代码添加联系人:

  1.  public boolean insert(String given_name, String mobile_number,  
  2.             String work_email, String im_qq) {  
  3.         try {  
  4.             ContentValues values = new ContentValues();  
  5.   
  6.             // 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId  
  7.             Uri rawContactUri = getContentResolver().insert(  
  8.                     RawContacts.CONTENT_URI, values);  
  9.             long rawContactId = ContentUris.parseId(rawContactUri);  
  10.   
  11.             // 向data表插入姓名数据  
  12.             if (given_name != "") {  
  13.                 values.clear();  
  14.                 values.put(Data.RAW_CONTACT_ID, rawContactId);  
  15.                 values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);  
  16.                 values.put(StructuredName.GIVEN_NAME, given_name);  
  17.                 getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  18.                         values);  
  19.             }  
  20.   
  21.             // 向data表插入电话数据  
  22.             if (mobile_number != "") {  
  23.                 values.clear();  
  24.                 values.put(Data.RAW_CONTACT_ID, rawContactId);  
  25.                 values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);  
  26.                 values.put(Phone.NUMBER, mobile_number);  
  27.                 values.put(Phone.TYPE, Phone.TYPE_MOBILE);  
  28.                 getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  29.                         values);  
  30.             }  
  31.   
  32.             // 向data表插入Email数据  
  33.             if (work_email != "") {  
  34.                 values.clear();  
  35.                 values.put(Data.RAW_CONTACT_ID, rawContactId);  
  36.                 values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);  
  37.                 values.put(Email.DATA, work_email);  
  38.                 values.put(Email.TYPE, Email.TYPE_WORK);  
  39.                 getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  40.                         values);  
  41.             }  
  42.   
  43.             // 向data表插入QQ数据  
  44.             if (im_qq != "") {  
  45.                 values.clear();  
  46.                 values.put(Data.RAW_CONTACT_ID, rawContactId);  
  47.                 values.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);  
  48.                 values.put(Im.DATA, im_qq);  
  49.                 values.put(Im.PROTOCOL, Im.PROTOCOL_QQ);  
  50.                 getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  51.                         values);  
  52.             }  
  53.             // 向data表插入头像数据  
  54.             Bitmap sourceBitmap = BitmapFactory.decodeResource(getResources(),  
  55.                     R.drawable.icon);  
  56.             final ByteArrayOutputStream os = new ByteArrayOutputStream();  
  57.             // 将Bitmap压缩成PNG编码,质量为100%存储  
  58.             sourceBitmap.compress(Bitmap.CompressFormat.PNG, 100, os);  
  59.             byte[] avatar = os.toByteArray();  
  60.             values.put(Data.RAW_CONTACT_ID, rawContactId);  
  61.             values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE);  
  62.             values.put(Photo.PHOTO, avatar);  
  63.             getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  64.                     values);  
  65.         }  
  66.   
  67.         catch (Exception e) {  
  68.             return false;  
  69.         }  
  70.         return true;  
  71.     }  
  72. 下面是读取联系人的代码:
  73. Cursor cursor = Main2Activity.this.getContentResolver().query(ContactsContract.Contacts
                    .CONTENT_URI,
            null, null, null, null);
    while (cursor.moveToNext()) {
        int contactIdIndex = 0;
        int nameIndex = 0;
        contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID);
        nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
        String contactId = cursor.getString(contactIdIndex);
        String name = cursor.getString(nameIndex);
        if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(contactId)) {
            Cursor phoneCursor = getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                            + "=" + contactId, null, null);
            boolean flag=true;
            while(phoneCursor.moveToNext()&&flag){
                String string = phoneCursor.getString(phoneCursor.getColumnIndex
                        (ContactsContract.CommonDataKinds.Phone.NUMBER));
                if(!TextUtils.isEmpty(name)&&!TextUtils.isEmpty(string)){
                    listName.add(name);
                    listTel.add(string);
                    flag=false;
                }
            }
        }
    
    }
    这里我只是读取的一个电话号码,因为一个姓名可能对应多个号码

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值