Android 联系人的读取,查询,添加

来源:互联网 发布:d算法 编辑:程序博客网 时间:2024/05/21 19:37

先加读和写权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />

<uses-permission android:name="android.permission.WRITE_CONTACTS" />  

获取所有联系人,方法1:

<span style="font-size:14px;">/** * 获取联系人,方式1 */private void getContact1() {String uristring = "content://com.android.contacts/contacts";Uri uri = Uri.parse(uristring);ContentResolver resolver = getApplicationContext().getContentResolver();Cursor cursor = resolver.query(uri, new String[] { "_id" }, null, null,null);StringBuilder jpsb = new StringBuilder();while (cursor.moveToNext()) {int contactid = cursor.getInt(0);jpsb = jpsb.append("contactid = " + contactid);String uristring2 = "content://com.android.contacts/contacts/"+ contactid + "/data";Uri uri2 = Uri.parse(uristring2);Cursor datacCursor = resolver.query(uri2, new String[] {"mimetype", "data1", "data2" }, null, null, null);while (datacCursor.moveToNext()) {String type = datacCursor.getString(datacCursor.getColumnIndex("mimetype"));String data1 = datacCursor.getString(datacCursor.getColumnIndex("data1"));if (type.equals("vnd.android.cursor.item/name"))// 姓名{jpsb.append(",name =").append(data1);} else if (type.equals("vnd.android.cursor.item/phone_v2")) {// 电话jpsb.append(",phone = ").append(data1);}}jpsb.append("\n");if (datacCursor != null) {datacCursor.close();}}Log.i(TAG, jpsb.toString());textView.setText(jpsb.toString());if (cursor != null) {cursor.close();}}</span>
获取联系人,方法2:

<span style="font-size:14px;">/** * 获取联系人,方式2 */private void getContact2() {string = "";count = 0;ContentResolver resolver = getApplicationContext().getContentResolver();Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);while (cursor.moveToNext()) {// 取得联系人的名字索引int nameIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);String contact = cursor.getString(nameIndex);string += contact + ":";// 取得联系人的ID索引值String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));// 查询该位联系人的电话号码,类似的可以查询email,photoCursor phone = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "+ contactId, null, null);// 第一个参数是确定查询电话号,第三个参数是查询具体某个人的过滤值// 一个人可能有几个号码while (phone.moveToNext()) {String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));string = string + strPhoneNumber + " ;";}string += "\n";count++;phone.close();}cursor.close();Log.i(TAG, String.valueOf(count));// 设置显示内容textView.setText(string);// 这里需要将String写入文件}</span>


获取联系人,方法3:

public class GetNumber {private static String number;private static String contactName;private static List<PhoneInfo> lists = new ArrayList<PhoneInfo>();/** * 获取通讯录中的联系人姓名及电话号码 *  * @param context * @return */public static List<PhoneInfo> getPhoneNum(Context context) {Cursor cursor = context.getContentResolver().query(Phone.CONTENT_URI,null, null, null, null);while (cursor.moveToNext()) {number = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));contactName = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME));PhoneInfo info = new PhoneInfo(number, contactName);// System.out.println("number :" + number + ",name: " +// contactName);lists.add(info);}return lists;}}



添加联系人

<span style="font-size:14px;">/** * 在同一个事务中完成联系人各项数据的添加 *  * 添加联系人 *  * @throws Exception */public void addContact() {String uriString = "content://com.android.contacts/raw_contacts";Uri uri = Uri.parse(uriString);ContentResolver resolver = getApplicationContext().getContentResolver();ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();ContentProviderOperation operation1 = ContentProviderOperation.newInsert(uri).withValue("account_name", null).build();operations.add(operation1);// 添加姓名uri = Uri.parse("content://com.android.contacts/data");ContentProviderOperation operation2 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0).withValue("mimetype", "vnd.android.cursor.item/name").withValue("data2", "SB").build();operations.add(operation2);// 添加电话uri = Uri.parse("content://com.android.contacts/data");ContentProviderOperation operation3 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0).withValue("mimetype", "vnd.android.cursor.item/phone_v2").withValue("data2", "2").withValue("data1", "18810466333").build();operations.add(operation3);try {resolver.applyBatch("com.android.contacts", operations);} catch (RemoteException e) {e.printStackTrace();} catch (OperationApplicationException e) {e.printStackTrace();} finally {}}</span>

代码下载:http://download.csdn.net/detail/leokelly001/8128721


0 0
原创粉丝点击