开发者社区> 一叶飘舟> 正文

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

简介:
+关注继续查看
[java] view plaincopy
  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. }  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android增量升级的方法和原理
总结: 我们使用delta编码算法减少Android应用升级程序的大小。我们通过bsdiff和bspatch工具在android上实现delta编码算法。
799 0
Android 号码查询性能优化
我的需求是做一个快速拨号界面!list列表显示所有联系人Calllog资料!原来的做法在前面的日志中有提到!大概是先查 Cursor phoneCursor = this.managedQuery( ContactsContract.
564 0
android联系人app<一>
android通信录想必大家都不会陌生,有系统自带的联系人,也有比如qq通信录,百度通讯录,,来电通,go联系人等。每种大家可能都有有偏好喜爱,但是这里我个人推荐大家使用qq通信录、百度通讯录以及来电通。
1066 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
20915 0
Android 获取Contacts 联系人 姓名 号码 照片信息
直接贴代码不解释 private void getCursors() { Cursor phoneCursor = this.managedQuery( ContactsContract.
509 0
Android managedQuery查询如果加入group by条件(及其猥琐的方法)
下午研究了很久都没有找到如何在managedQuery方法里面加入group by 条件最后灵机一动! 想出了一个及其猥琐的方法解决此问题! 此时我的需求是查出Calllog中的号码!相同的自然只出一个结果! 正常的查询是这样的! Cursor phoneCursor = this.
638 0
+关注
1635
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载