Android 获取联系人和电话号码详解手机开发

获取联系人和电话号码

  private void queryContactPhoneNumber() { 
        String[] cols = {ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; 
        Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                cols, null, null, null); 
        for (int i = 0; i < cursor.getCount(); i++) { 
            cursor.moveToPosition(i); 
            // 取得联系人名字 
            int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME); 
            int numberFieldColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
            String name = cursor.getString(nameFieldColumnIndex); 
            String number = cursor.getString(numberFieldColumnIndex); 
            Toast.makeText(this, name + " " + number, Toast.LENGTH_SHORT).show(); 
        } 
    }

 

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

public class AndroidTest extends Activity {    
    private static final String TAG = "AndroidTest";    
     
    private TextView m_TextView;    
    private EditText m_EditText;    
         
    private String mNumber;    
         
    @Override   
    public void onCreate(Bundle savedInstanceState){    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.main);    
             
        m_TextView = (TextView) findViewById(R.id.TextView01);    
        m_EditText = (EditText) findViewById(R.id.EditText01);    
     
        m_TextView.setTextSize(20);    
        /**   
        * 设置当m_EditText中为空时提示的内容     
        * 在XML中同样可以实现:android:hint="请输入账号"   
        */   
        m_EditText.setHint("请输入账号");    
     
        /* 设置EditText事件监听 */   
        m_EditText.setOnKeyListener(new EditText.OnKeyListener() {    
        public boolean onKey(View arg0, int arg1, KeyEvent arg2)    
        {    
            // TODO Auto-generated method stub    
            // 得到文字,将其显示到TextView中    
//          m_TextView.setText("文本框中内容是:" + m_EditText.getText().toString());    
            return false;    
        }    
        });    
             
        m_EditText.setOnFocusChangeListener(new OnFocusChangeListener() {    
     
            public void onFocusChange(View v, boolean hasFocus) {    
                // TODO Auto-generated method stub    
                mNumber = ((EditText)v).getText().toString();    
                Log.d(TAG, "mNumber = " + mNumber);    
                getPeople();    
            }    
                 
        });    
             
        m_EditText.addTextChangedListener(new TextWatcher() {    
     
            public void afterTextChanged(Editable s) {    
                // TODO Auto-generated method stub    
                     
            }    
     
            public void beforeTextChanged(CharSequence s, int start, int count,    
                    int after) {    
                // TODO Auto-generated method stub    
                     
            }    
     
            public void onTextChanged(CharSequence s, int start, int before,    
                    int count) {    
                // TODO Auto-generated method stub    
                // 得到文字,将其显示到TextView中    
                m_TextView.setText("文本框中内容是:" + m_EditText.getText().toString());    
            }    
                 
        });    
    }    
         
    /*   
     * 根据电话号码取得联系人姓名   
     */   
    public void getPeople() {    
        String[] projection = { ContactsContract.PhoneLookup.DISPLAY_NAME,    
                                ContactsContract.CommonDataKinds.Phone.NUMBER};    
     
        Log.d(TAG, "getPeople ---------");    
             
        // 将自己添加到 msPeers 中    
        Cursor cursor = this.getContentResolver().query(    
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,    
                projection,    // Which columns to return.    
                ContactsContract.CommonDataKinds.Phone.NUMBER + " = '" + mNumber + "'", // WHERE clause.    
                null,          // WHERE clause value substitution    
                null);   // Sort order.    
     
        if( cursor == null ) {    
            Log.d(TAG, "getPeople null");    
            return;    
        }    
        Log.d(TAG, "getPeople cursor.getCount() = " + cursor.getCount());    
        for( int i = 0; i < cursor.getCount(); i++ )    
        {    
            cursor.moveToPosition(i);    
                 
            // 取得联系人名字    
            int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);       
            String name = cursor.getString(nameFieldColumnIndex);    
            Log.i("Contacts", "" + name + " .... " + nameFieldColumnIndex); // 这里提示 force close    
            m_TextView.setText("联系人姓名:" + name);    
        }    
    }    
         
}  

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/app/6188.html

(0)
上一篇 2021年7月17日 00:43
下一篇 2021年7月17日 00:43

相关推荐

发表回复

登录后才能评论