转自:http://www.itivy.com/android/archive/2012/3/7/634667317165382352.html

在android应用程序的开发中,经常要实现的一个功能是调用系统自带的联系人界面,做到选择人之后,取得相应的名称和号码,并返回。

android2.0前后实现方式上也有一定的差别:主要是2.0及以上版本联系人API发生了变化,由原来的Contacts变成了ContactsContract。

(一)2.0之前取联系人列表的方式 声明意图方式一 Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setData(Contacts.People.CONTENT_URI); startActivityForResult(intent, PICK_CONTACT ); 声明意图方式二 Intentintent= new Intent(Intent.ACTION_PICK); intent.setType("Contacts.People.CONTENT_TYPE");//vnd.android.cursor.dir/person startActivityForResult(intent, PICK_CONTACT ); 实现onActivityResult protected void onActivityResult (int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case PICK_CONTACT : if (data == null) { return; } Uri uri = data.getData(); Cursor cursor = getContentResolver().query(uri, null, null, null, null); cursor.moveToFirst(); String number = cursor.getString(cursor.getColumnIndexOrThrow(Phones.NUMBER)); Log.d(TAG, "number" + number); mContactText.setText(number); mContactText.setSelection(number.length()); break; default: break; } } (二)2.0之后取联系人列表的方式 声明意图方式一
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, PICK_CONTACT); 声明意图方式二 Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(ContactsContract.Contacts.CONTENT_TYPE);//vnd.android.cursor.dir/contact startActivityForResult(intent, PICK_CONTACT); 实现onActivityResult @Override public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); switch (reqCode) { case (PICK_CONTACT) : if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor c = managedQuery(contactData, null, null, null, null); if (c.moveToFirst()) { String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); String phoneNumber = null; if ( hasPhone.equalsIgnoreCase("1")){ hasPhone = "true"; }else{ hasPhone = "false" ; } if (Boolean.parseBoolean(hasPhone)){ Cursorphones=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); while (phones.moveToNext()){ phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } phones.close(); } } } break; } } 来源:http://blog.csdn.net/laoyao_moyan/article/details/7328995

更多相关文章

  1. Android中显示网页的多种方式
  2. android http协议添加Authorization认证方式
  3. Android控件TextView中ellipsize属性(设置当文字长度超过textview
  4. Android之Broadcast Receiver的两种注册方式
  5. Android 网络请求简单使用方式
  6. android 截取验证码的两种实现方式
  7. Android中程序与Service交互的方式
  8. android 联系人源码分析 新字段的添加流程
  9. Android入门(4) 布局、JUnit、日志与数据存储访问方式

随机推荐

  1. Android之数据统计
  2. Android面试题集
  3. 聊聊android界面适配
  4. 开发商为什么仍然忽视Android系统?
  5. Android(安卓)判断应用前后台运行状态并
  6. android listview长按,单击各种事件捕捉
  7. Android(安卓)逐帧动画
  8. android studio调用JNI
  9. 【Android每日一讲】2012.10.30 自制计算
  10. Android(安卓)串口驱动和应用测试