現在我一直在做同樣的事情後,確保您的查詢是正確的(我查詢ContactsContract.CommonDataKinds.Phone.CONTENT_URI )(確保你的投影是正確的,等等)你可以做下面的事情,我想你面臨的困難是拿起一個預設標籤與自定義標籤。預設標籤在TYPE列中表示爲整數,而如果TYPE == TYPE_CUSTOM,則LABEL字段將包含您要查找的數據。
從TYPE中的數字移動到字符串是使用提供的方法。雖然我認爲這是處理的,但我不確定本地化。
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();
在這個片段中,你會用裝有用於此電話號碼的標籤的字符串的ArrayList最終結束。請注意電話號碼需要非常精確的匹配,所以444-4444不會與4444444匹配,反之亦然。
個人而言,我還沒有時間去嘗試將「移動」或「」放在getTypeLabel中的最後一個變量之間有什麼區別,儘管它看起來沒有什麼區別。
希望這個答案還不算晚。