我使用以下光标来检索手机中的联系人?但是,代码在SIM和手机上都给了我联系人。是否可以通过电话(如果有),电话号码和显示名称来获取电话中的联系人?
cursor = getContentResolver().query(Phone.CONTENT_URI, null, null, null, null);
int contactIdIdx = cursor.getColumnIndex(Phone._ID);
int nameIdx = cursor.getColumnIndex(Phone.DISPLAY_NAME);
int phoneNumberIdx = cursor.getColumnIndex(Phone.NUMBER);
int photoIdIdx = cursor.getColumnIndex(Phone.PHOTO_ID);
cursor.moveToFirst();
do {
try {
Contact c = new Contact();
String idContact = cursor.getString(contactIdIdx);
String name = cursor.getString(nameIdx);
c.setName(name);
Log.i(TAG,storage.getDriveName()+": "+name);
String phoneNumber = cursor.getString(phoneNumberIdx);
Log.i(TAG,storage.getDriveName()+": "+phoneNumber);
c.setPhoneNumber(phoneNumber);
if(phoneNumber != null)
c.setPhotoUri(getPhotoUri(Long.valueOf(fetchContactIdFromPhoneNumber(phoneNumber))));
contacts.add(cbd);
} catch(Exception e) {
Log.e(TAG,storage.getDriveName()+": "+e.getMessage());
}
} while (cursor.moveToNext());
} catch (Exception e) {
Log.e(TAG,storage.getDriveName()+": "+e.getMessage());
}
if (cursor != null) {
cursor.close();
}
}
答案 0 :(得分:1)
我已经实现了以下代码,为我工作检查出来:
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
// filters contact with phone numbers
contactPickerIntent
.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(contactPickerIntent, CONTACT_PICKER);
现在在activityresult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
AndyUtills.removeSimpleProgressDialog();
if (resultCode == RESULT_OK) {
switch (requestCode) {
case CONTACT_PICKER:
Cursor cursor = null;
Bitmap bitmap = null;
Uri result = data.getData();
// String id = result.getLastPathSegment();
cursor = getContentResolver().query(result, null, null, null,
null);
// String contactId=cursor.get;
if (cursor == null) {
AndyUtills.showToast("Selection Fail", this);
return;
}
if (!cursor.moveToFirst()) {
cursor.close();
AndyUtills.showToast("Selection Fail", this);
return;
}
String contactName = cursor
.getString(cursor
.getColumnIndex((ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
.toString().trim()));
String contactNumber = cursor
.getString(cursor
.getColumnIndex((ContactsContract.CommonDataKinds.Phone.NUMBER)));
// check for contact whether it is already inserted or not
if (checkForSameNumber(contactNumber)) {
AndyUtills.showToast("Same contact is already inserted",
this);
return;
}
String photo = null;
// get photo uri from contacts
try {
photo = cursor
.getString(cursor
.getColumnIndex(ContactsContract.CommonDataKinds.Contactables.PHOTO_URI));
Log.i("TAG", "Activity Result: Old:" + photo);
} catch (Exception e) {
e.printStackTrace();
}
cursor.close();
break;
}
} else {
// gracefully handle failure
Log.w("Auto Respond", "Warning: activity result not ok");
}
}
希望你能得到你想要的所有东西。