将android手机号码标签ID翻译成字符串

时间:2011-04-10 10:00:20

标签: uri addressbook android

嗨,我正在写一个小巧的Android应用程序,它正在使用电话标签,但我不明白我是如何翻译Documentation中描述的uri值的。

我想要做的是将TYPE_HOME翻译为Home,依此类推。我目前的解决方案是列出所有已翻译的字符串,但它已经提出了很多问题。但我希望能够像地址簿和其他应用程序一样对它进行操作。

4 个答案:

答案 0 :(得分:25)

Android有一个内置的方法来做到这一点......

import android.provider.ContactsContract.CommonDataKinds.Phone;
String s = (String) Phone.getTypeLabel(context.getResources(), Phone.TYPE_HOME, "");

答案 1 :(得分:1)

据我所知,标签没有资源。您只能在自己的应用中将所有字符串作为资源,并将默认类型转换为这些字符串。

更新:有很多解决方案可以将标签类型转换为字符串。例如,您可以定义string-array资源:

<string-array name="labels">
    <item>@string/phone</item>
    <item>@string/mobile</item>
    <item>@string/work</item>
</string-array>

然后,您应该为您支持的所有语言定义这些字符串。在使用getResources().getTextArray(R.array.labels)加载此数组后,您将能够将标签代码转换为字符串。您还必须处理自定义标签。

这是一个可能的解决方案,但实际上一切都取决于您应用的架构。

答案 2 :(得分:1)

查看the source code for ContactsListActivity,Android开发人员似乎只将Phone.TYPE_MOBILE之类的值映射到他们在strings.xml中定义的值,仅适用于该应用,表示没有通用的系统标签可以轻松查找(例如,可能会使用@android:drawable来使用系统图形,这不是推荐的做法,因为图像在平台之间会发生变化。)

答案 3 :(得分:0)

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

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

但对于自定义手机类型,您应该使用cosider手机标签,而不仅仅是手机类型:

String phoneLabel = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL));