【问题标题】:how to get the localized label of the phone types?如何获取手机类型的本地化标签?
【发布时间】:2010-08-24 18:53:43
【问题描述】:

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

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

【问题讨论】:

  • Quaerite, et invenietis: String[] s = android.content.res.Resources.getSystem() .getStringArray( android.R.array.phoneTypes );

标签: android phone-number localized


【解决方案1】:

我知道这有点老了,但是这个:

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

为我工作

【讨论】:

  • 很遗憾不适用于自定义标签。
  • 我知道那是旧的,但也许我可以帮助别人。检查 Phone.TYPE 是否为 == 0,然后您可以从 Phone.LABEL 获取名称(是自定义的),否则使用@James Dunham 的答案获取名称。
【解决方案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));

【讨论】:

  • 完美答案。简洁准确。谢谢。
【解决方案3】:

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

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

这些是适用于安装了 Android 2.0+ 的手机的有效手机类型,但同一个数组中缺少这些类型:
回拨、汽车、公司主要、ISDN、主要、其他传真、无线电、电传、TTY TDD、工作移动、工作寻呼机、助理、彩信

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

参考文献

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

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

【讨论】:

【解决方案4】:

我正在使用这段代码

    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 给我之后给我自定义资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2021-02-17
    • 2023-03-28
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多