как получить локализованную метку типа телефона? - PullRequest
6 голосов
/ 24 августа 2010

При смене пользовательского языкового стандарта метки типов телефонов меняются на соответствующий язык. Кто-нибудь знает, как получить локализованную метку типов телефонов?

Я выбираю контакт в своем приложении, чтобы получить его номер телефона, и, если существует более одного номера, я использую AlertDialog, чтобы позволить пользователю выбрать правильный. В этом списке я хочу показать метку типа, чтобы пользователю было легче выбирать. Поскольку их ярлыки находятся где-то в системе Android, должна быть возможность получить локализованный ярлык. К сожалению, при чтении телефонного номера Phone.LABEL является нулевым.

Ответы [ 4 ]

18 голосов
/ 07 мая 2011

Я знаю, что это немного устарело, но это:

Phone.getTypeLabel(this.getResources(), cursor.getInt(typeIdx), "");

у меня сработало

1 голос
/ 10 марта 2015

Да, вы можете получить локализованную строку типа телефона с кодом:

int phoneNumberType = (int)pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
ContactsContract.CommonDataKinds.Phone.getTypeLabel(context.getResources(), phoneNumberType , "")

, но для пользовательских типов телефонов вы должны указывать название телефона, а не только тип телефона:

String phoneLabel = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL));
1 голос
/ 13 января 2013

я использую этот кусок кода

    public void getPhoneType(){
    int res;
    for(int i=0;i<=20;i++){
        res = ContactsContract.CommonDataKinds.Phone.getTypeLabelResource(i);
        Log.d(TAG,"i: "+ i +" type: " + context.getString(res));
    }
}

не нашел места, где можно получить фактическое число допустимых типов, но http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html#getTypeLabelResource%28int%29 говорит, что он всегда будет давать действительное разрешение, поэтому вы можете выполнять итерацию до тех пор, пока оно не начнет давать повторные значения ... мне после 20 дает мне обычное разрешение.

1 голос
/ 11 октября 2010

Ответ Inferno - правильный ответ, и я был рад найти этот ответ, потому что он был похож на то, что я искал.Однако, если вы имеете дело с телефонами, установленными с API уровня 5 (Android 2.0) или более поздней версии, есть одна небольшая проблема с этим: android.R.array.phoneTypes возвращает только список типов телефонов, которые присутствовали до того, как класс ContactsContract был замененинтерфейс Contacts на уровне API 5. Я проверил метки, перечисленные при создании нового контакта на эмуляторах, работающих под управлением этих версий Android (уровни API): 1.6 (4), 2.1-обновление 1 (7) и 2.2 (8).

При распечатке android.R.array.phoneTypes содержит следующие допустимые типы телефонов:
Домашний, мобильный, рабочий, рабочий факс, домашний факс, пейджер, другой, пользовательский

Это действительные типы телефонов, представленные для телефонов с установленной Android 2.0+, которые отсутствуют в том же массиве:
Обратный вызов, Автомобиль, Главный оператор, ISDN, Основной, Другой факс, Радио, Telex, TTY TDD, Work Mobile, Work Pager, Assistant, MMS

К сожалению, мне не удалось найти что-то вроде android.R.array.phoneTypes, в котором перечислены все эти действительные типы телефонов для телефонов Android 2.0+,Кто-нибудь еще сталкивался с таким?

Ссылки

android.R.array.phoneTypes определены: http://developer.android.com/reference/android/R.array.html#phoneTypes

Примечание: я отправляю своидве другие ссылочные ссылки в отдельных ответах, так как я не могу опубликовать более одной гиперссылки на сообщение в данный момент.

...