2012-11-20 95 views
2

我無法找到如何查詢自定義電話號碼類型。就像您進入聯繫人一樣 - 編輯聯繫人並將其中一個電話號碼更改爲自定義標籤。有沒有辦法讓名稱輸入到自定義類型標籤中?
我試圖android獲取自定義聯繫人類型標籤名稱

「android.content.res.Resources.getSystem().getStringArray( android.R.array.phoneTypes)」

,但它只是似乎崩潰的應用程序我認爲它適用於舊版的android。
我也曾嘗試

curser.getString(curser.getColumnIndex(ContactsContract.CommonDataKinds.Phone .LABEL)」。

如果任何人有一個想法,將不勝感激,或也許我指向一個重複如果存在我找不到一個雖然

回答

3

現在我一直在做同樣的事情後,確保您的查詢是正確的(我查詢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中的最後一個變量之間有什麼區別,儘管它看起來沒有什麼區別。

希望這個答案還不算晚。

相關問題