Java 从android联系人获取多个号码
我一直在搜索如何从一个联系人那里获取多个电话号码(如家、手机、工作),但我被难住了。我将在下面添加我正在使用的代码。我希望有人能帮忙。谢谢 杰夫 使用此类代码:Java 从android联系人获取多个号码,java,android,android-contacts,Java,Android,Android Contacts,我一直在搜索如何从一个联系人那里获取多个电话号码(如家、手机、工作),但我被难住了。我将在下面添加我正在使用的代码。我希望有人能帮忙。谢谢 杰夫 使用此类代码: public void readContacts(Context context) { String contactId, hasPhone, phoneNumber; ContentResolver cr=context.getContentResolver(); Cursor phones, cc = cr.
public void readContacts(Context context)
{
String contactId, hasPhone, phoneNumber;
ContentResolver cr=context.getContentResolver();
Cursor phones, cc = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
while (cc.moveToNext())
{
contactId = cc.getString(cc.getColumnIndex(ContactsContract.Contacts._ID));
hasPhone = cc.getString(cc.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
int nameFieldColumnIndex = cc.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
String contactName = cc.getString(nameFieldColumnIndex);
Log.v(TAG, "Contact id="+contactId+" name="+contactName);
if (Integer.parseInt(hasPhone)==1)
{
// You know it has a number so now query it like this
phones = cr.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));
String label=getPhoneLabel(context, phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)),
phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL)));
Log.v(TAG, "Phone"+phoneNumber+" with label="+label);
}
phones.close();
}
}
cc.close();
}
private String getPhoneLabel(Context context, int type, String label)
{
String s;
switch(type)
{
case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
s = context.getString(R.string.home_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
s = context.getString(R.string.mobile_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
s = context.getString(R.string.work_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK:
s = context.getString(R.string.fax_work_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME:
s = context.getString(R.string.fax_home_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER:
s = context.getString(R.string.pager_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER:
s = context.getString(R.string.other_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CALLBACK:
s = context.getString(R.string.callback_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CAR:
s = context.getString(R.string.car_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_COMPANY_MAIN:
s = context.getString(R.string.company_main_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_ISDN:
s = context.getString(R.string.isdn_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MAIN:
s = context.getString(R.string.main_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER_FAX:
s = context.getString(R.string.other_fax_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_RADIO:
s = context.getString(R.string.radio_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_TELEX:
s = context.getString(R.string.telex_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_TTY_TDD:
s = context.getString(R.string.tty_tdd_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE:
s = context.getString(R.string.work_mobile_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_PAGER:
s = context.getString(R.string.work_pager_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_ASSISTANT:
s = context.getString(R.string.assistant_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MMS:
s = context.getString(R.string.mms_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM:
if(label == null)
s = context.getString(R.string.phone);
else
s = label;
break;
default:
s = context.getString(R.string.phone);
}
return s;
}
试试这个链接它会帮助你barmaley,字符串R.string.home\u phone,R.string.mobile\u phone,R.string.work\u phone的值是多少。。。?
public void readContacts(Context context)
{
String contactId, hasPhone, phoneNumber;
ContentResolver cr=context.getContentResolver();
Cursor phones, cc = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
while (cc.moveToNext())
{
contactId = cc.getString(cc.getColumnIndex(ContactsContract.Contacts._ID));
hasPhone = cc.getString(cc.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
int nameFieldColumnIndex = cc.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
String contactName = cc.getString(nameFieldColumnIndex);
Log.v(TAG, "Contact id="+contactId+" name="+contactName);
if (Integer.parseInt(hasPhone)==1)
{
// You know it has a number so now query it like this
phones = cr.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));
String label=getPhoneLabel(context, phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)),
phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL)));
Log.v(TAG, "Phone"+phoneNumber+" with label="+label);
}
phones.close();
}
}
cc.close();
}
private String getPhoneLabel(Context context, int type, String label)
{
String s;
switch(type)
{
case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
s = context.getString(R.string.home_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
s = context.getString(R.string.mobile_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
s = context.getString(R.string.work_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK:
s = context.getString(R.string.fax_work_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME:
s = context.getString(R.string.fax_home_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER:
s = context.getString(R.string.pager_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER:
s = context.getString(R.string.other_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CALLBACK:
s = context.getString(R.string.callback_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CAR:
s = context.getString(R.string.car_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_COMPANY_MAIN:
s = context.getString(R.string.company_main_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_ISDN:
s = context.getString(R.string.isdn_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MAIN:
s = context.getString(R.string.main_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER_FAX:
s = context.getString(R.string.other_fax_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_RADIO:
s = context.getString(R.string.radio_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_TELEX:
s = context.getString(R.string.telex_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_TTY_TDD:
s = context.getString(R.string.tty_tdd_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE:
s = context.getString(R.string.work_mobile_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_PAGER:
s = context.getString(R.string.work_pager_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_ASSISTANT:
s = context.getString(R.string.assistant_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MMS:
s = context.getString(R.string.mms_phone);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM:
if(label == null)
s = context.getString(R.string.phone);
else
s = label;
break;
default:
s = context.getString(R.string.phone);
}
return s;
}