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


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

相关内容