获得联系人姓名,相关电话以及邮件地址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];@Overridepublic 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;
?