Sylvanas0101 2017-12-02 08:13 采纳率: 40%
浏览 2272

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

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

 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();
            }
        });
    }


}

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

  • 写回答

2条回答 默认 最新

  • keyboy_rl 2017-12-04 07:00
    关注
    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();
    
    }
    
        你的代码太乱了,这个亲测可用,问题你对比一下
    
    评论

报告相同问题?

悬赏问题

  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度