//增加读取和添加联系人的权限 <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> // 读取系统联系人 private void ReadContacts() { Uri raw_uri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri data_uri = Uri.parse("content://com.android.contacts/data"); Cursor cursor = resolver.query(raw_uri, null, null, null, null); list = new ArrayList<person>(); while (cursor.moveToNext()) { person p = new person(); int id = cursor.getInt(cursor.getColumnIndex("contact_id")); Cursor cursor2 = resolver.query(data_uri, null, "raw_contact_id=?", new String[] { String.valueOf(id) }, null); p.setContact_id(id); while (cursor2.moveToNext()) { String data = cursor2 .getString(cursor2.getColumnIndex("data1")); String type = cursor2.getString(cursor2 .getColumnIndex("mimetype")); if ("vnd.android.cursor.item/name".equals(type)) p.setName(data); else if ("vnd.android.cursor.item/phone_v2".equals(type)) p.setPhone(data); else if ("vnd.android.cursor.item/email_v2".equals(type)) p.setEmail(data); } list.add(p); } } // ListView点击删除联系人 listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { person p = adapter.getItem(position); Uri raw_url = Uri .parse("content://com.android.contacts/raw_contacts"); int delete = resolver.delete(raw_url, "contact_id=?", new String[] { p.getContact_id() + "" }); if (delete > 0) { Toast.makeText(ListViewActivity.this, "删除成功", 0).show(); list.remove(position); ReadContacts(); adapter = new ArrayAdapter<person>(ListViewActivity.this, android.R.layout.simple_list_item_1, list); listview.setAdapter(adapter); } else { Toast.makeText(ListViewActivity.this, "删除失败", 0).show(); } } }); //修改联系人,弹出一个AlertDialog private void updateContact(int position) { final person p = adapter.getItem(position); View view1 = View.inflate(ListViewActivity.this, R.layout.alertdialog,null); final EditText name = (EditText) view1.findViewById(R.id.name); final EditText phone = (EditText) view1.findViewById(R.id.phone); final EditText email = (EditText) view1.findViewById(R.id.eamil); Builder builder = new AlertDialog.Builder(ListViewActivity.this); builder.setTitle("请输入修改后的内容:"); builder.setView(view1); builder.setPositiveButton("确定", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Uri uri = Uri.parse("content://com.android.contacts/data"); // 修改之前,先查询这个表 Cursor cursor = resolver.query(uri, null, null, null, null); while (cursor.moveToNext()) { String type = cursor.getString(cursor .getColumnIndex("mimetype")); if ("vnd.android.cursor.item/name".equals(type)) { ContentValues values = new ContentValues(); values.put("data1", name.getText().toString()); resolver.update(uri, values, "raw_contact_id=? and mimetype=?", new String[] { p.getContact_id() + "", type }); } else if ("vnd.android.cursor.item/phone_v2" .equals(type)) { ContentValues values = new ContentValues(); values.put("data1", phone.getText().toString()); resolver.update(uri, values, "raw_contact_id=? and mimetype=?", new String[] { p.getContact_id() + "", type }); } else if ("vnd.android.cursor.item/email_v2" .equals(type)) { ContentValues values = new ContentValues(); values.put("data1", email.getText().toString()); resolver.update(uri, values, "raw_contact_id=? and mimetype=?", new String[] { p.getContact_id() + "", type }); } } Toast.makeText(ListViewActivity.this, "修改完成", 0).show(); // 修改完成以后重新刷新页面和通讯录 shuaxin(); } }); builder.setNegativeButton("取消", null); builder.create().show(); } // 添加通讯录 private void addContacts() { final ContentResolver resolver2 = getContentResolver(); View view1 = View.inflate(ListViewActivity.this, R.layout.alertdialog,null); final EditText name = (EditText) view1.findViewById(R.id.name); final EditText phone = (EditText) view1.findViewById(R.id.phone); final EditText email = (EditText) view1.findViewById(R.id.eamil); Builder builder = new AlertDialog.Builder(ListViewActivity.this); builder.setTitle("请输入要添加的内容:"); builder.setView(view1); builder.setPositiveButton("确定", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Uri raw_uri = Uri .parse("content://com.android.contacts/raw_contacts"); Uri data_url = Uri .parse("content://com.android.contacts/data"); Cursor cursor = resolver .query(raw_uri, new String[] { "contact_id" }, null, null, null); // 查询raw_contacts表中的id,然后id++,让id增长 cursor.moveToLast(); int id = cursor.getInt(cursor .getColumnIndex("contact_id")); id = id + 1; // 然后向这个表中添加一个id ContentValues values = new ContentValues(); values.put("contact_id", id); resolver2.insert(raw_uri, values); // 再向data表中添加 姓名 ContentValues values2 = new ContentValues(); values2.put("raw_contact_id", id); values2.put("mimetype", "vnd.android.cursor.item/name"); values2.put("data1", name.getText().toString()); resolver2.insert(data_url, values2); // 添加电话号码 ContentValues values3 = new ContentValues(); values3.put("raw_contact_id", id); values3.put("mimetype", "vnd.android.cursor.item/phone_v2"); values3.put("data1", phone.getText().toString()); resolver2.insert(data_url, values3); // 添加邮箱 ContentValues values4 = new ContentValues(); values4.put("raw_contact_id", id); values4.put("mimetype", "vnd.android.cursor.item/email_v2"); values4.put("data1", email.getText().toString()); resolver2.insert(data_url, values4); Toast.makeText(ListViewActivity.this, "添加成功", 0).show(); // 刷新listview列表 shuaxin(); } }); builder.create().show(); }
手机通讯录增删改查(在ListView上面操作),复杂
最新推荐文章于 2024-04-17 00:29:24 发布