在某些特定的情况下,app需要读取手机联系人,我们不能让用户自己打开电话薄,复制粘贴信息,这样会让用户感觉很麻烦。这时我们的主角startAcivityForResult()来直接打开联系人列表。
private void pickContact() {
// Create an intent to "pick" a contact, as defined by the content provider URI
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
然后通过onActivityResult()方法回调我们的数据。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// If the request went well (OK) and the request was PICK_CONTACT_REQUEST
if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
// Perform a query to the contact's content provider for the contact's name
Cursor cursor = getContentResolver().query(data.getData(), new String[] {Contacts.DISPLAY_NAME}, null, null, null);
if (cursor.moveToFirst()) {
// True if the cursor is not empty
int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
String name = cursor.getString(columnIndex);
String phone=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
// Do something with the selected contact's name...
}
在6.0以上的手机不要忘了动态申请权限 在manifest也要申请权限