因为2.0后API改变了,添加联系人这里好多方方法已过期!
现在想问一下,2.0后用改变后的API,怎么个添加新联系人跟手机号码这些呀???
2.1 2.2 是不是也跟2.0的一样添加法呢??

解决方案 »

  1.   

    给你一个例子, 自己去找吧, 如果不会的话, 可以再回复我。 大家相互学习!
    m_cr= context.getContentResolver()Cursor cursor = m_cr.query(
    ContactsContract.Contacts.CONTENT_URI, 
    null, 
    null, 
    null, 
    null);
    //这里的ID是cursor移动到特定位置取得到的, 按顺序移动cursor, 取得每一个userid
    String id = cursor.getString(
    cursor.getColumnIndex(ContactsContract.Contacts._ID));
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
     ops.add(ContentProviderOperation
                            .newUpdate(Data.CONTENT_URI)
                            .withSelection(Data.CONTACT_ID + "=? AND " + Data.MIMETYPE + "=?",
                                    new String[] {id,
                                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE})
                            .withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, givenName)
                            .withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, familyName)
                            .build());
      

  2.   

    没写完, 追加上 try
                {
                    m_cr.applyBatch(ContactsContract.AUTHORITY, ops);
                } catch (RemoteException e)
                {
                    e.printStackTrace();
                } catch (OperationApplicationException e)
                {
                    e.printStackTrace();
                }
      

  3.   


      ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
      
            ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(ContactsContract.Data.CONTACT_ID, 0)
                    .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
                    .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, Contact_P.Name)
                    .build());
            ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(ContactsContract.Data.CONTACT_ID, 0)
                    .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                    .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, lcp.get(0).Name)
                    .build());
            try {
             
             getProviderContext().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
            } catch (Exception e) {
             e.printStackTrace();
            }我也有一段类似的代码,这个更接近添加功能,你那个感觉到是更新操作
      

  4.   

    private void addContacts() {
    ContentValues values = new ContentValues();
    Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
    long rawContactId = ContentUris.parseId(rawContactUri); values.clear();
    values.put(Data.RAW_CONTACT_ID, rawContactId);
    values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
    values.put(StructuredName.GIVEN_NAME, "Sullivan");
    values.put(StructuredName.FAMILY_NAME, "Mike");
    getContentResolver().insert(Data.CONTENT_URI, values); values.clear();
    values.put(Data.RAW_CONTACT_ID, rawContactId);
    values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    values.put(Phone.NUMBER, "13989297343");
    values.put(Phone.TYPE, Phone.TYPE_HOME);
    values.put(Email.DATA, "[email protected]");
    values.put(Email.TYPE, Email.TYPE_WORK);
    getContentResolver().insert(Data.CONTENT_URI, values);
    }这个应该可以 之前我测试过了