Traducir la etiqueta de número de teléfono android a la cadena

Hola Im que escribe una pequeña aplicación androide que está trabajando de cerca las etiquetas del teléfono del whit pero no entiendo cómo estoy suposed para traducir los valores de uri descritos en la documentación .

Lo que quiero hacer es traducir TYPE_HOME a Home y así sucesivamente. Mi solución actual es tener una lista de toda la cadena traducida, pero ha presentado un montón de problemas con languidecer. Pero quiero ser capaz de hacerlo como el addresbook y otras aplicaciones lo dosis.

Android tiene un método incorporado para hacer esto ya …

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

En cuanto al código fuente de ContactsListActivity , parece que los desarrolladores de Android sólo han asignado valores como Phone.TYPE_MOBILE a los valores definidos en strings.xml, sólo para esa aplicación, lo que indica que no hay ninguna etiqueta de sistema universal para buscar fácilmente (por ejemplo, como Uno podría utilizar @android:drawable para utilizar gráficos del sistema, que no es una práctica recomendada, ya que las imágenes cambian entre plataformas).

Por lo que sé, no hay recursos para las etiquetas. Sólo puede tener todas las cadenas como recursos en su propia aplicación y convertir tipos predeterminados a estas cadenas.

UPDATE : Hay un montón de soluciones para convertir el tipo de etiqueta a cadena. Por ejemplo, puede definir el recurso string-array :

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

A continuación, debe definir esta cadena para todos los idiomas que admite. Podrás convertir código de etiqueta en cadena después de cargar esta matriz con getResources().getTextArray(R.array.labels) . También tienes que tratar con las etiquetas personalizadas.

Esa es una solución posible, pero de hecho todo depende de la arquitectura de su aplicación.

Sí, puede obtener una cadena de tipo de teléfono localizada con el código:

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

Pero para los tipos de teléfono personalizado que debe cosider etiqueta del teléfono, no sólo el tipo de teléfono:

 String phoneLabel = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL)); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.