지금은 쿼리가 정확한지 확인한 후에도 똑같은 작업을 수행하고 있습니다. ContactsContract.CommonDataKinds.Phone.CONTENT_URI를 쿼리하고 있습니다.) (프로젝션이 올바른지 확인하십시오. .) 당신은 아래와 같이 뭔가를 할 수 있습니다. 당신이 직면하고있는 어려움이 미리 설정된 레이블 대 사용자 정의 레이블을 선택하고있는 것 같습니다. 미리 설정된 레이블은 TYPE 열에 정수로 표시되는 반면 TYPE == TYPE_CUSTOM 인 경우 LABEL 필드에는 찾고있는 데이터가 있습니다.
TYPE의 숫자에서 문자열로 이동하는 방법이 제공됩니다. 내가 처리 한 것 같아도 현지화에 대해서는 잘 모르겠다. 이 전화 번호에 사용되는 라벨로 채워진 문자열의 ArrayList를하게 될 겁니다이 조각의 끝에
Cursor curse = mContext.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.LABEL},
ContactsContract.CommonDataKinds.Phone.NUMBER + " = ?", new String[]{numnum}, null);
int colIndex = curse.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
int lblIndex = curse.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL);
ArrayList<String> numbers = new ArrayList<String>();
String cur = "";
while(curse.moveToNext())
{
int labelType = curse.getInt(colIndex);
if(labelType == ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM)
{
cur = curse.getString(lblIndex);
}
else
{
CharSequence seq = ContactsContract.CommonDataKinds.Phone.getTypeLabel(mContext.getResources(), labelType, "Mobile");
cur = seq.toString();
}
numbers.add(cur);
}
curse.close();
. 전화 번호는 매우 정확하게 일치해야하므로 444-4444는 4444444와 일치하지 않으며 반대의 경우도 마찬가지입니다.
개인적으로, 나는 아직 차이를 보이지는 않았지만 getTypeLabel의 마지막 변수에 "Mobile"또는 ""을 넣는 것의 차이점을 실험 할 시간이 없었습니다.
희망이 답변이 너무 늦지 않았기를 바랍니다.