我正在开发一个应用程序,在该应用程序中我正在使用 startactivity 结果并在我的应用程序中访问默认的 android 电话簿,之后在选择一个联系人时,我得到了姓名,所选联系人的一个电话号码。如果任何联系人拥有多个电话号码以及电话号码类型(如工作、手机等),我想检索多个电话号码。请帮助我,任何帮助将不胜感激。
问问题
2661 次
2 回答
2
试试这个,因为这对我有用:
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(intent, AppConstants.PICK_CONTACT);
然后在 onActivityResult 中执行以下操作:
Cursor cursor = null;
String phoneNumber = "", primaryMobile = "";
List<String> allNumbers = new ArrayList<String>();
int contactIdColumnId = 0, phoneColumnID = 0, nameColumnID = 0;
try {
Uri result = data.getData();
Utils.printLog(TAG, result.toString());
String id = result.getLastPathSegment();
cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null);
contactIdColumnId = cursor.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID);
phoneColumnID = cursor.getColumnIndex(Phone.DATA);
nameColumnID = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
if (cursor.moveToFirst()) {
while (cursor.isAfterLast() == false) {
idContactBook = cursor.getString(contactIdColumnId);
displayName = cursor.getString(nameColumnID);
phoneNumber = cursor.getString(phoneColumnID);
if (phoneNumber.length() == 0)
continue;
int type = cursor.getInt(cursor.getColumnIndex(Phone.TYPE));
if (type == Phone.TYPE_MOBILE && primaryMobile.equals(""))
primaryMobile = phoneNumber;
allNumbers.add(phoneNumber);
cursor.moveToNext();
}
} else {
// no results actions
}
} catch (Exception e) {
// error actions
} finally {
if (cursor != null) {
cursor.close();
}
}
于 2013-05-06T12:00:55.227 回答
0
尝试这个
Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, personId);
Uri phonesUri = Uri.withAppendedPath(personUri, People.Phones.CONTENT_DIRECTORY);
String[] proj = new String[] {Phones._ID, Phones.TYPE, Phones.NUMBER, Phones.LABEL}
Cursor cursor = contentResolver.query(phonesUri, proj, null, null, null);
于 2013-05-06T12:00:38.920 回答