首页 > 系统 > Android > 正文

Android:打开系统联系人界面并获取数据

2019-11-07 23:49:02
字体:
来源:转载
供稿:网友

在Android应用程序的开发中,经常要实现的一个功能是调用系统自带的联系人界面,做到选择人之后,取得相应的名称和号码,并返回。

    android2.0前后实现方式上也有一定的差别:主要是2.0及以上版本联系人API发生了变化,由原来的Contacts变成了ContactsContract。

必须权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />

(一) 2.0之前取联系人列表的方式声明意图方式一Intent intent = new Intent();intent.setAction(Intent.ACTION_PICK);intent.setData(Contacts.People.CONTENT_URI);startActivityForResult(intent,    PICK_CONTACT     );声明意图方式二Intent intent  = new Intent(Intent.ACTION_PICK);intent.setType("Contacts.People.CONTENT_TYPE");//vnd.android.cursor.dir/personstartActivityForResult(intent,    PICK_CONTACT     );实现onActivityResult
PRotected void onActivityResult (int requestCode, int resultCode, Intent data) {          super.onActivityResult(requestCode, resultCode, data);          switch (requestCode) {              case   PICK_CONTACT   :                  if (data == null) {                      return;                  }                  Uri uri = data.getData();                  Cursor cursor = getContentResolver().query(uri, null, null, null, null);                  cursor.moveToFirst();                  String number = cursor.getString(cursor.getColumnIndexOrThrow(Phones.NUMBER));                  Log.d(TAG, "number" + number);                  mContactText.setText(number);                  mContactText.setSelection(number.length());                  break;                            default:                  break;          }      } (二) 2.0之后取联系人列表的方式声明意图方式一Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);startActivityForResult(intent, PICK_CONTACT);声明意图方式二Intent intent = new Intent(Intent.ACTION_PICK);         intent.setType(ContactsContract.Contacts.CONTENT_TYPE);//vnd.android.cursor.dir/contactstartActivityForResult(intent, PICK_CONTACT);

实现onActivityResult

private static final int PICK_CONTACT = 0;   @Override      public void onActivityResult(int reqCode, int resultCode, Intent data) {          super.onActivityResult(reqCode, resultCode, data);                    switch (reqCode) {              case (PICK_CONTACT):                  if (resultCode == Activity.RESULT_OK) {                      Uri contactData = data.getData();                      Cursor c = managedQuery(contactData, null, null, null, null);                      if (c.moveToFirst()) {                          String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));                          String hasphone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));                          String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));                          String phoneNumber = null;                          if (hasPhone.equalsIgnoreCase("1")) {                              hasPhone = "true";                          }                          else {                              hasPhone = "false";                          }                          if (Boolean.parseBoolean(hasPhone)) {                              Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,                                                                         null,                                                                         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "                                                                                 + contactId,                                                                         null,                                                                         null);                              while (phones.moveToNext()) {                                  phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                              }                              phones.close();                          }                                                  }                  }                  break;          }      }  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表