7

更改自定义区域设置时,电话类型的标签会更改为适当的语言。有人知道如何获取电话类型的本地化标签吗?

我在我的应用程序中选择一个联系人以获取其电话号码,如果有多个号码,我使用 AlertDialog 让用户选择当前号码。在这个选择列表中,我想显示类型的标签,以便用户更容易选择。由于它们的标签在 Android 系统中的某个地方,因此必须可以获取本地化标签。不幸的是,Phone.LABEL 在读取电话号码时为空。

4

4 回答 4

18

我知道这有点旧,但是:

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

为我工作

于 2011-05-06T20:28:11.587 回答
2

是的,您可以使用以下代码获取本地化的电话类型字符串:

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));
于 2015-03-09T21:41:03.780 回答
1

Inferno 的答案是一个有效的答案,我很高兴找到这个答案,因为它与我正在寻找的相似。但是,如果您正在处理安装了 API 级别 5 (Android 2.0) 或更高版本的手机,则存在一个小问题:android.R.array.phoneTypes仅返回在ContactsContract类替换ContactsAPI 级别的接口之前存在的手机类型列表5. 我验证了在运行以下 Android 版本(API 级别)的模拟器上创建新联系人时列出的标签:1.6 (4)、2.1-update 1 (7) 和 2.2 (8)。

打印出来时,android.R.array.phoneTypes包含以下有效电话类型:
家庭、移动、工作、工作传真、家庭传真、寻呼机、其他、自定义

这些是适用于安装了 Android 2.0+ 的电话的有效电话类型,但同一阵列中缺少这些电话类型:
Callback、Car、Company Main、ISDN、Main、Other Fax、Radio、Telex、TTY TDD、Work Mobile、Work Pager , 助理, 彩信

不幸的是,我找不到类似的东西android.R.array.phoneTypes会列出所有这些适用于 Android 2.0+ 手机的有效手机类型。有没有人遇到过这样的?

参考

android.R.array.phoneTypes定义:http: //developer.android.com/reference/android/R.array.html#phoneTypes

注意:我在单独的答案中发布了我的另外两个参考链接,因为目前我似乎不能在每个帖子中发布超过一个超链接。

于 2010-10-11T00:45:51.310 回答
1

我正在使用这段代码

    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说它总是会给出一个有效的 res 所以,你可以迭代直到它开始给我重复的值......在 20 给我自定义 res 之后给我。

于 2013-01-13T16:42:57.560 回答