获取联系人和电话号码

  1. private void queryContactPhoneNumber() {
  2. String[] cols = {ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
  3. Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
  4. cols, null, null, null);
  5. for (int i = 0; i < cursor.getCount(); i++) {
  6. cursor.moveToPosition(i);
  7. // 取得联系人名字
  8. int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
  9. int numberFieldColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
  10. String name = cursor.getString(nameFieldColumnIndex);
  11. String number = cursor.getString(numberFieldColumnIndex);
  12. Toast.makeText(this, name + " " + number, Toast.LENGTH_SHORT).show();
  13. }
  14. }

根据电话号码查询联系人姓名的方法:

  1. public class AndroidTest extends Activity {
  2. private static final String TAG = "AndroidTest";
  3. private TextView m_TextView;
  4. private EditText m_EditText;
  5. private String mNumber;
  6. @Override
  7. public void onCreate(Bundle savedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.main);
  10. m_TextView = (TextView) findViewById(R.id.TextView01);
  11. m_EditText = (EditText) findViewById(R.id.EditText01);
  12. m_TextView.setTextSize(20);
  13. /**
  14. * 设置当m_EditText中为空时提示的内容
  15. * 在XML中同样可以实现:android:hint="请输入账号"
  16. */
  17. m_EditText.setHint("请输入账号");
  18. /* 设置EditText事件监听 */
  19. m_EditText.setOnKeyListener(new EditText.OnKeyListener() {
  20. public boolean onKey(View arg0, int arg1, KeyEvent arg2)
  21. {
  22. // TODO Auto-generated method stub
  23. // 得到文字,将其显示到TextView中
  24. // m_TextView.setText("文本框中内容是:" + m_EditText.getText().toString());
  25. return false;
  26. }
  27. });
  28. m_EditText.setOnFocusChangeListener(new OnFocusChangeListener() {
  29. public void onFocusChange(View v, boolean hasFocus) {
  30. // TODO Auto-generated method stub
  31. mNumber = ((EditText)v).getText().toString();
  32. Log.d(TAG, "mNumber = " + mNumber);
  33. getPeople();
  34. }
  35. });
  36. m_EditText.addTextChangedListener(new TextWatcher() {
  37. public void afterTextChanged(Editable s) {
  38. // TODO Auto-generated method stub
  39. }
  40. public void beforeTextChanged(CharSequence s, int start, int count,
  41. int after) {
  42. // TODO Auto-generated method stub
  43. }
  44. public void onTextChanged(CharSequence s, int start, int before,
  45. int count) {
  46. // TODO Auto-generated method stub
  47. // 得到文字,将其显示到TextView中
  48. m_TextView.setText("文本框中内容是:" + m_EditText.getText().toString());
  49. }
  50. });
  51. }
  52. /*
  53. * 根据电话号码取得联系人姓名
  54. */
  55. public void getPeople() {
  56. String[] projection = { ContactsContract.PhoneLookup.DISPLAY_NAME,
  57. ContactsContract.CommonDataKinds.Phone.NUMBER};
  58. Log.d(TAG, "getPeople ---------");
  59. // 将自己添加到 msPeers 中
  60. Cursor cursor = this.getContentResolver().query(
  61. ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
  62. projection, // Which columns to return.
  63. ContactsContract.CommonDataKinds.Phone.NUMBER + " = '" + mNumber + "'", // WHERE clause.
  64. null, // WHERE clause value substitution
  65. null); // Sort order.
  66. if( cursor == null ) {
  67. Log.d(TAG, "getPeople null");
  68. return;
  69. }
  70. Log.d(TAG, "getPeople cursor.getCount() = " + cursor.getCount());
  71. for( int i = 0; i < cursor.getCount(); i++ )
  72. {
  73. cursor.moveToPosition(i);
  74. // 取得联系人名字
  75. int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
  76. String name = cursor.getString(nameFieldColumnIndex);
  77. Log.i("Contacts", "" + name + " .... " + nameFieldColumnIndex); // 这里提示 force close
  78. m_TextView.setText("联系人姓名:" + name);
  79. }
  80. }
  81. }

Android 获取联系人和电话号码的更多相关文章

  1. android获取手机录

    在Android开发中,读取手机通讯录中的号码是一种基本操作,但是由于Android的版本众多,所以手机通讯录操作的代码比较纷杂,在本文中进行一下总结. Android1.5是现在的Android系统 ...

  2. Android 获取手机SIM资料详解

    TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取 ...

  3. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

  4. Android获取系统时间方法的总结

    Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar ...

  5. java 正则表达式的应用:读取文件,获取其中的电话号码

    1.正则表达式 正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描 ...

  6. Android获取屏幕宽和高

    android获取屏幕的高度和宽度用到WindowManager这个类,两种方法:   1.WindowManager wm = (WindowManager) getContext()        ...

  7. android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位

    android 获取文件夹.文件的大小 以B.KB.MB.GB 为单位   public class FileSizeUtil { public static final int SIZETYPE_B ...

  8. Android获取APK包名的几种方法

    Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...

  9. I.MX6 android 获取framebuffer信息

    /******************************************************************************** * I.MX6 android 获取 ...

随机推荐

  1. HTML5 Plus 拍照或者相册选择图片上传

    HBuilder+HTML5 Plus+MUI实现拍照或者相册选择图片上传,利用HTML5 Plus的Camera.Gallery.IO.Storage和Uploader来实现手机APP拍照或者从相册 ...

  2. 词云wordcloud类介绍&python制作词云图&词云图乱码问题等小坑

    词云图,大家一定见过,大数据时代大家经常见,我们今天就来用python的第三方库wordcloud,来制作一个大数据词云图,同时会降到这个过程中遇到的各种坑, 举个例子,下面是我从自己的微信上抓的微信 ...

  3. Codeforces Beta Round #94 div 1 D Numbers map+思路

    D. Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  4. python tcp

    server import socket host="localhost" port= s=socket.socket(socket.AF_INET,socket.SOCK_STR ...

  5. robot_pose的类型

    http://docs.ros.org/api/geometry_msgs/html/msg/Pose.html

  6. Java读取xml

    首先将xml的格式展示出来,如下 <?xml version="1.0"?> <configuration> <connectionStrings n ...

  7. php时区设置 warning: strtotime(): It is not safe to rely on the system's timezone settings

    warning: strtotime(): It is not safe to rely on the system's timezone settings warning: strtotime(): ...

  8. LeetCode--203--删除链表中的节点

    问题描述: 删除链表中等于给定值 val 的所有节点. 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3 ...

  9. 20161212xlVBA文本文件多列合并

    Sub NextSeven_CodeFrame() '应用程序设置 Application.ScreenUpdating = False Application.DisplayAlerts = Fal ...

  10. python-day20--collections模块

    1.namedtuple: 生成可以使用名字来访问元素内容的tuple >>> from collections import namedtuple >>> Poi ...