安卓中使用ContentProvider获取和添加联系人

一样,因为这是对通讯录进行操作,因此我们需要添加相应的权限。

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

代码如下所示:

package com.itfom.contentprovider;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private static final String TAG = "ContactTest";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//实例化控件并绑定监听事件
		Button btn_get=(Button) findViewById(R.id.btn_get);
		Button btn_add=(Button) findViewById(R.id.btn_add);
		//设置监听事件
		//添加联系人
		btn_add.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				ContentValues values = new ContentValues();
				//首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
				Uri rawContactUri = MainActivity.this.getContentResolver().insert(RawContacts.CONTENT_URI, values);
				long rawContactId = ContentUris.parseId(rawContactUri);

				//往data表入姓名数据
				values.clear();
				values.put(Data.RAW_CONTACT_ID, rawContactId);
				values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
				values.put(StructuredName.GIVEN_NAME, "zhangsan");
				MainActivity.this.getContentResolver().insert(
						android.provider.ContactsContract.Data.CONTENT_URI, values);

				//往data表入电话数据
				values.clear();
				values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);
				values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
				values.put(Phone.NUMBER, "5554");
				values.put(Phone.TYPE, Phone.TYPE_MOBILE);
				MainActivity.this.getContentResolver().insert(
						android.provider.ContactsContract.Data.CONTENT_URI, values);

				//往data表入Email数据
				values.clear();
				values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);
				values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
				values.put(Email.DATA, "xsc218@126.com");
				values.put(Email.TYPE, Email.TYPE_WORK);
				MainActivity.this.getContentResolver().insert(
						android.provider.ContactsContract.Data.CONTENT_URI, values);
			}
		});
		//获取联系人
		btn_get.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				ContentResolver contentResolver = MainActivity.this.getContentResolver();
				Uri uri = Uri.parse("content://com.android.contacts/contacts");
				Cursor cursor = contentResolver.query(uri, null, null, null, null);
				while(cursor.moveToNext()){
					// 获取联系人姓名
					StringBuilder sb = new StringBuilder();
					String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));  
					String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
					sb.append("contactId=").append(contactId).append(",name=").append(name);

					//获取联系人手机号码
					Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,  
							null,  
							ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,  
							null, null);  
					while(phones.moveToNext()){
						String phone = phones.getString(phones.getColumnIndex("data1")); 
						sb.append(",phone=").append(phone);
					}

					//获取联系人email
					Cursor emails = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,  
							null,  
							ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,  
							null, null); 
					while(emails.moveToNext()){
						String email = emails.getString(emails.getColumnIndex("data1")); 
						sb.append(",email=").append(email);
					}
					Log.i(TAG, sb.toString());
				}
			}
		});
	}
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BruceCheng夏夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值