2017-04-17 1 views
0

J'utilise ContactsContract.CommonDataKinds.Phone.getTypeLabel pour obtenir la Chaîne du type de téléphone de l'utilisateur (1 -> accueil, 2 -> mobile , 3 -> travail, etc.). Tout semble fonctionner correctement sur la plupart des appareils, mais sur les appareils Motorola, les chaînes retournées sont des caractères étranges que je ne peux même pas taper ici (ressemble à du coréen/japonais/thaïlandais). La localisation de ces appareils est l'anglais et les utilisateurs ne peuvent pas non plus comprendre ces étranges chaînes.ContactsContract.CommonDataKinds.Phone.getTypeLabel renvoie des chaînes étranges sur les appareils Motorola

Mon code est simple:

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

Répondre

0

obtenir une pré étiquette définie d'un contact est assez directe, cependant, si l'utilisateur a défini une étiquette personnalisée, il est pas direct, vous pouvez essayer le follwing pour obtenir l'étiquette correcte:

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)); 
      } 

Vous pouvez maintenant utiliser directement l'étiquette chaîne.