美文网首页
android 保存电话到通讯录

android 保存电话到通讯录

作者: 勤劳的蚂蚁 | 来源:发表于2019-01-16 17:11 被阅读23次
   /*保存电话*/
    //根据电话号码查询姓名(在一个电话打过来时,如果此电话在通讯录中,则显示姓名)
    public void savePhone(String name, String phone) {

        Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + phone);
        ContentResolver resolver = this.getContext().getContentResolver();
//        ContactsContract.Data.DISPLAY_NAME 查询 该电话的客户姓名

        Cursor cursor = resolver.query(uri, new String[]{ContactsContract.Data.HAS_PHONE_NUMBER}, null, null, null); //从raw_contact表中返回display_name
        int count = cursor.getCount();

        if (count > 0) {
            if (cursor.moveToFirst()) {
                String hasPhone = cursor.getString(0);//查询该电话有没有人
                if (TextUtils.isEmpty(hasPhone)) {//没有该电话
                    insertPhone(name, phone);
                } else if ("0".equals(hasPhone)) {//没有该电话
                    insertPhone(name, phone);
                } else {
                   MyToast.showShort("该电话号码已存在!");
                }

            }
        } else {
            insertPhone(name, phone);
        }

        cursor.close();
    }


 private void insertPhone(String name, String phone) {
        if (TextUtils.isEmpty(name)) {
            name = phone;
        }

//        //插入raw_contacts表,并获取_id属性
//        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
//        ContentResolver resolver = this.getContext().getContentResolver();
//        ContentValues values = new ContentValues();
//        long contact_id = ContentUris.parseId(resolver.insert(uri, values));
//        //插入data表
//        uri = Uri.parse("content://com.android.contacts/data");
//        //add Name
//        values.put("raw_contact_id", contact_id);
//        values.put(ContactsContract.Data.MIMETYPE,"vnd.android.cursor.item/name");
//        values.put("data2", name);
//        values.put("data1", name);
//        resolver.insert(uri, values);
//        values.clear();
//        //add Phone
//        values.put("raw_contact_id", contact_id);
//        values.put(ContactsContract.Data.MIMETYPE,"vnd.android.cursor.item/phone_v2");
//        values.put("data2", "2");   //手机
//        values.put("data1", phone);
//        resolver.insert(uri, values);
//        values.clear();


        ContentValues values = new ContentValues(); //首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId      
        Uri rawContactUri = this.getContext().getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);//获取id     
        long rawContactId = ContentUris.parseId(rawContactUri); //往data表入姓名数据         
        values.clear();
        values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); //添加id         
        values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);//添加内容类型(MIMETYPE)     
        values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name);//添加名字,添加到first name位置        
        this.getContext().getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values); //往data表入电话数据        
        values.clear();
        values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
        values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
        values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
        values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
        this.getContext().getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
        MyToast.showShort("保存电话");
    }

其他
//                                Intent addIntent = new Intent(Intent.ACTION_INSERT, Uri.withAppendedPath(Uri.parse("content://com.android.contacts"), "contacts"));
//                                addIntent.setType("vnd.android.cursor.dir/person");
//                                addIntent.setType("vnd.android.cursor.dir/contact");
//                                addIntent.setType("vnd.android.cursor.dir/raw_contact");
//                                if (TextUtils.isEmpty(name)) {
//                                    addIntent.putExtra(ContactsContract.Intents.Insert.NAME, phone);
//                                } else {
//                                    addIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
//                                }
//                                addIntent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE, phone);
//                                startActivity(addIntent);

相关文章

网友评论

      本文标题:android 保存电话到通讯录

      本文链接:https://www.haomeiwen.com/subject/hwnmdqtx.html