获得联系人姓名,相关电话以及邮件地址sdk2.0

权限别忘记

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

 

创建一个抽象类 并判断版本问题

abstract class ContactsAdapterBridge {
	abstract ListAdapter buildNameAdapter(Activity a);
	abstract ListAdapter buildPhonesAdapter(Activity a);
	abstract ListAdapter buildEmailAdapter(Activity a);
	
	public static final ContactsAdapterBridge INSTANCE=buildBridge();
	
	private static ContactsAdapterBridge buildBridge() {
		int sdk=new Integer(Build.VERSION.SDK).intValue();
		
		if (sdk<5) {
			return(new OldContactsAdapterBridge());
		}
		
		return(new NewContactsAdapterBridge());
	}
}

 

实现这个类

class NewContactsAdapterBridge extends ContactsAdapterBridge {
	
	ListAdapter buildNameAdapter(Activity a) {
		String[] PROJECTION=new String[] { 	Contacts._ID,	Contacts.DISPLAY_NAME,};
		Cursor c=a.managedQuery(Contacts.CONTENT_URI,PROJECTION, null, null, null);
		
		return(new SimpleCursorAdapter(	a,
																		android.R.layout.simple_list_item_1,
																		c,
																		new String[] {
																			Contacts.DISPLAY_NAME
																		},
																		new int[] {
																			android.R.id.text1
																		}));
	}
	
	ListAdapter buildPhonesAdapter(Activity a) {
		String[] PROJECTION=new String[] { 	Contacts._ID,	Contacts.DISPLAY_NAME,	Phone.NUMBER	};
		Cursor c=a.managedQuery(Phone.CONTENT_URI,PROJECTION, null, null, null);
		
		return(new SimpleCursorAdapter(	a,
																		android.R.layout.simple_list_item_2,
																		c,
																		new String[] {
																			Contacts.DISPLAY_NAME,
																			Phone.NUMBER
																		},
																		new int[] {
																			android.R.id.text1,
																			android.R.id.text2
																		}));
	}
	
	ListAdapter buildEmailAdapter(Activity a) {
		String[] PROJECTION=new String[] { 	Contacts._ID,Contacts.DISPLAY_NAME,Email.DATA};
		Cursor c=a.managedQuery(Email.CONTENT_URI,PROJECTION, null, null, null);
		
		return(new SimpleCursorAdapter(	a,
																		android.R.layout.simple_list_item_2,
																		c,
																		new String[] {
																			Contacts.DISPLAY_NAME,
																			Email.DATA
																		},
																		new int[] {
																			android.R.id.text1,
																			android.R.id.text2
																		}));
	}
}

 注意不同颜色就好了。

 

public class ContactSpinners extends ListActivity implements AdapterView.OnItemSelectedListener {
	private static String[] options={"Contact Names","Contact Names & Numbers","Contact Names & Email Addresses"};
	private ListAdapter[] listAdapters=new ListAdapter[3];

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		initListAdapters();
		
		Spinner spin=(Spinner)findViewById(R.id.spinner);
		spin.setOnItemSelectedListener(this);
		
		ArrayAdapter<String> aa=new ArrayAdapter<String>(this,
															android.R.layout.simple_spinner_item,
															options);
		
		aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spin.setAdapter(aa);
	}
	
	public void onItemSelected(AdapterView<?> parent,View v, int position, long id) {
		setListAdapter(listAdapters[position]);
	}
	
	public void onNothingSelected(AdapterView<?> parent) {
		// ignore
	}
	
	private void initListAdapters() {
		listAdapters[0]=ContactsAdapterBridge.INSTANCE.buildNameAdapter(this);
		listAdapters[1]=ContactsAdapterBridge.INSTANCE.buildPhonesAdapter(this);
		listAdapters[2]=ContactsAdapterBridge.INSTANCE.buildEmailAdapter(this);
	}
	
}

 

主程序就很简单了。

最后就是以前版本的查找联系人

class OldContactsAdapterBridge extends ContactsAdapterBridge {
	ListAdapter buildNameAdapter(Activity a) {
		String[] PROJECTION=new String[] { 	Contacts.People._ID,
																				Contacts.PeopleColumns.NAME
																			};
		Cursor c=a.managedQuery(Contacts.People.CONTENT_URI,
														PROJECTION, null, null,
														Contacts.People.DEFAULT_SORT_ORDER);
		
		return(new SimpleCursorAdapter(	a,
																		android.R.layout.simple_list_item_1,
																		c,
																		new String[] {
																			Contacts.PeopleColumns.NAME
																		},
																		new int[] {
																			android.R.id.text1
																		}));
	}
	
	ListAdapter buildPhonesAdapter(Activity a) {
		String[] PROJECTION=new String[] { 	Contacts.Phones._ID,
																				Contacts.Phones.NAME,
																				Contacts.Phones.NUMBER
																			};
		Cursor c=a.managedQuery(Contacts.Phones.CONTENT_URI,
														PROJECTION, null, null,
														Contacts.Phones.DEFAULT_SORT_ORDER);
		
		return(new SimpleCursorAdapter(	a,
																		android.R.layout.simple_list_item_2,
																		c,
																		new String[] {
																			Contacts.Phones.NAME,
																			Contacts.Phones.NUMBER
																		},
																		new int[] {
																			android.R.id.text1,
																			android.R.id.text2
																		}));
	}
	
	ListAdapter buildEmailAdapter(Activity a) {
		String[] PROJECTION=new String[] { 	Contacts.ContactMethods._ID,
																				Contacts.ContactMethods.DATA,
																				Contacts.PeopleColumns.NAME
																			};
		Cursor c=a.managedQuery(Contacts.ContactMethods.CONTENT_EMAIL_URI,
														PROJECTION, null, null,
														Contacts.ContactMethods.DEFAULT_SORT_ORDER);
		
		return(new SimpleCursorAdapter(	a,
																		android.R.layout.simple_list_item_2,
																		c,
																		new String[] {
																			Contacts.PeopleColumns.NAME,
																			Contacts.ContactMethods.DATA
																		},
																		new int[] {
																			android.R.id.text1,
																			android.R.id.text2
																		}));
	}
}

 要导入的包

import android.database.Cursor;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;

 

你可能感兴趣的:(C++,c,android,C#)