ContactsContract.CommonDataKinds.Phone.getTypeLabel在Motorola设备上返回奇怪的字符串

时间:2017-04-17 07:57:04

标签: android android-contacts

我使用ContactsContract.CommonDataKinds.Phone.getTypeLabel来获取用户手机类型的字符串(1 - > home,2 - > mobile,3 - > work等)。 在大多数设备上似乎一切正常,但在摩托罗拉设备上,返回的字符串是一些奇怪的字符,我甚至不能在这里输入(看起来像韩文/日文/泰文)。这些设备的语言环境是英语,用户也无法理解那些奇怪的字符串。

我的代码很简单:

return ContactsContract.CommonDataKinds.Phone.getTypeLabel(context.getResources(), type, "").toString();

2 个答案:

答案 0 :(得分:0)

获取联系人的预定义标签非常直接,但是,如果用户设置了自定义标签,那么它不是直接的,您可以尝试以下方式获取正确的标签:

int type = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
            String label = context.getResources().getString(ContactsContract.CommonDataKinds.Phone.getTypeLabelResource(type));
            if (label.equalsIgnoreCase("Custom")){
                label = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL));
            }

您现在可以直接使用标签字符串。

答案 1 :(得分:0)

通过这种方式,您将在typeName中获得标准或自定义标签。 (crPhones是迭代与单个联系人关联的号码的光标):

String label = crPhones.getString(crPhones.
        getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL));
int type = crPhones.getInt(crPhones.
        getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
String typeName = ContactsContract.CommonDataKinds.Phone.
        getTypeLabel(context.getResources(), type, label).toString();