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