1. 程式人生 > >android檢視聯絡人姓名和手機號碼

android檢視聯絡人姓名和手機號碼

第一步:佈局檔案就是一個Button,點選彈出聯絡人列表,選擇聯絡人後將聯絡人的資訊顯示在兩個TextView上,佈局程式碼很簡單,此處不再給出。

第二步:調到聯絡人選擇頁面並返回所選擇的聯絡人資訊可以用Intent來是實現,關鍵程式碼為:

Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,requestCode);

獲取聯絡人資訊的Activity程式碼為:

public class ReadContacts extends Activity{
    private Button queryContacts;
    private TextView contactName;
    private TextView contactNumber;
    //  定義Activity的請求碼
    private final int PICK_CONTACT = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        queryContacts = (Button) findViewById(R.id.query_contacts);
        contactName = (TextView) findViewById(R.id.tv_contact_name);
        contactNumber = (TextView) findViewById(R.id.tv_contact_number);
        queryContacts.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //  通過Intent調到手機聯絡人頁面,Action屬性為Intent.ACTION_PICK使使用者選擇聯絡人,並返回所選資料
                Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(intent,PICK_CONTACT);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case PICK_CONTACT:
                if(resultCode == Activity.RESULT_OK){
                    //  獲取返回的聯絡人的Uri資訊
                    Uri contactDataUri = data.getData();
                    Cursor cursor = getContentResolver().query(contactDataUri,null,null,null,null);
                    if(cursor.moveToFirst()){
                        //   獲得聯絡人記錄的ID
                        String contactId = cursor.getString(cursor.getColumnIndex(
                                ContactsContract.Contacts._ID));
                        //  獲得聯絡人的名字
                        String name = cursor.getString(cursor.getColumnIndex(
                                ContactsContract.Contacts.DISPLAY_NAME));
                        String phoneNumber = "未找到聯絡人號碼";
                        Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.
                                Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.
                                Phone.CONTACT_ID+"="+"?",new String[]{contactId},null);
                        if(phoneCursor.moveToFirst()){
                            phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(
                                    ContactsContract.CommonDataKinds.Phone.NUMBER));
                        }
                        //  關閉查詢手機號碼的cursor
                        phoneCursor.close();
                        contactName.setText(name);
                        contactNumber.setText(phoneNumber);
                    }
                    //  關閉查詢聯絡人資訊的cursor
                    cursor.close();
                }
                break;
        }
    }
}
第三步:讀取聯絡人資訊需要加許可權
<uses-permission android:name="android.permission.READ_CONTACTS"/>