android檢視聯絡人姓名和手機號碼
阿新 • • 發佈:2019-02-02
第一步:佈局檔案就是一個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"/>