做一个安卓实验,读取通讯录并添加联系人。在添加联系人的时候,发现添加的联系人信息是空的!

做一个安卓实验,读取通讯录并添加联系人。在添加联系人的时候,发现添加的联系人信息是空的图片说明
图片说明

 public class AddContactActivity extends AppCompatActivity {
    private EditText nameEdit;
    private EditText phonenumberEdit;
    private Button add;
    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_contact);

        nameEdit = (EditText) findViewById(R.id.name);
        phonenumberEdit = (EditText) findViewById(R.id.phonenumber);
        add = (Button) findViewById(R.id.add);
        toolbar = (Toolbar) findViewById(R.id.toolbar_addcontact);

        //Toolbar
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

        add.setOnClickListener(new View.OnClickListener() {
            String name = nameEdit.getText().toString().trim();
            String phonenumber = phonenumberEdit.getText().toString();

            @Override
            public void onClick(View v) {
                ContentResolver resolver = getContentResolver();
                Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
                Uri datauri = Uri.parse("content://com.android.contacts/data");
                Cursor cursor = resolver.query(uri, null, null, null, null);
                int count = cursor.getCount();
                ContentValues values = new ContentValues();
                int contact_id = count + 1;
                values.put("contact_id", contact_id);
                resolver.insert(uri, values);
                //插入具体的数据到data表,数据类型,data1具体的数据
                ContentValues namevalue = new ContentValues();
                namevalue.put("mimetype", "vnd.android.cursor.item/name"); // 指定数据类型
                namevalue.put("data1", name);
                namevalue.put("raw_contact_id", contact_id); // 一定要记得指定数据属于哪个联系人
                resolver.insert(datauri, namevalue);

                ContentValues phonevalue = new ContentValues();
                phonevalue.put("mimetype", "vnd.android.cursor.item/phone_v2");
                phonevalue.put("data1",phonenumber);
                phonevalue.put("raw_contact_id", contact_id);
                resolver.insert(datauri, phonevalue);

                Toast.makeText(AddContactActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
            }
        });
    }


}

但是把上面要添加的联系人信息由从EditText中读取改为直接给定时,发现联系人信息可以添加了
图片说明
图片说明

 public class AddContactActivity extends AppCompatActivity {
    private EditText nameEdit;
    private EditText phonenumberEdit;
    private Button add;
    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_contact);

        nameEdit = (EditText) findViewById(R.id.name);
        phonenumberEdit = (EditText) findViewById(R.id.phonenumber);
        add = (Button) findViewById(R.id.add);
        toolbar = (Toolbar) findViewById(R.id.toolbar_addcontact);

        //Toolbar
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

        add.setOnClickListener(new View.OnClickListener() {
            String name = nameEdit.getText().toString().trim();
            String phonenumber = phonenumberEdit.getText().toString();

            @Override
            public void onClick(View v) {
                ContentResolver resolver = getContentResolver();
                Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
                Uri datauri = Uri.parse("content://com.android.contacts/data");
                Cursor cursor = resolver.query(uri, null, null, null, null);
                int count = cursor.getCount();
                ContentValues values = new ContentValues();
                int contact_id = count + 1;
                values.put("contact_id", contact_id);
                resolver.insert(uri, values);
                //插入具体的数据到data表,数据类型,data1具体的数据
                ContentValues namevalue = new ContentValues();
                namevalue.put("mimetype", "vnd.android.cursor.item/name"); // 指定数据类型
                namevalue.put("data1", "Android");
                namevalue.put("raw_contact_id", contact_id); // 一定要记得指定数据属于哪个联系人
                resolver.insert(datauri, namevalue);

                ContentValues phonevalue = new ContentValues();
                phonevalue.put("mimetype", "vnd.android.cursor.item/phone_v2");
                phonevalue.put("data1","1234567890");
                phonevalue.put("raw_contact_id", contact_id);
                resolver.insert(datauri, phonevalue);

                Toast.makeText(AddContactActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
            }
        });
    }


}

不明白为什么,求大佬解答啊

public void testAddContact() throws Exception{
    Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    ContentResolver resolver = this.getContentResolver();
    ContentValues values = new ContentValues();
    long contactid = ContentUris.parseId(resolver.insert(uri, values));

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

    //添加姓名
    values.put("raw_contact_id", contactid);
    values.put(ContactsContract.Contacts.Data.MIMETYPE, "vnd.android.cursor.item/name");
    values.put("data1", nameEdit.getText().toString());
    resolver.insert(uri, values);
    values.clear();

    //添加电话
    values.put("raw_contact_id", contactid);
    values.put(ContactsContract.Contacts.Data.MIMETYPE, "vnd.android.cursor.item/phone_v2");
    values.put("data1", phonenumberEdit.getText().toString());
    resolver.insert(uri, values);
    values.clear();

}

    你的代码太乱了,这个亲测可用,问题你对比一下

图片说明
图片对比,你的问题应该就是contactid 的问题,改一个contactid 就好了