다음을 통해 공유


Trabajando con los contactos de nuestro dispositivo

El uso de los contactos del teléfono puede servir para añadir funcionalidades nuevas, ya sea crear nuestros propios grupos, aportar información al respecto de nuestros contactos dentro de la aplicación o muchas más opciones.

El sistema nos permite acceder a la información almacenada en el teléfono, o incluso crear nuestra propia agenda de contactos.

Accediendo a la información de contactos

Tenemos dos maneras diferentes de acceder a los contactos de nuestra aplicación, que son mostrando al usuario la interfaz del sistema y que él mismo elija el contacto o contactos en cuestión empleando el ContactPicker, o mediante una búsqueda por código, la cual realiza el proceso de una manera invisible para el usuario a través del ContactManager.

ContactPicker

Se trata de la manera de acceso a contactos más visual, le da al usuario una capacidad mayor de elección, y a su vez, no requiere que establezcamos en el manifiesto de la aplicación el acceso a los contactos.

Para lanzar el selector de contactos propio del sistema debemos declarar un ContactPicker y esperar que el usuario elija y acepte qué contacto quiere añadir.

Además, podemos hacer que el usuario se encuentre desde el primer momento con una lista filtrada previamente, añadiendo como condición que  los contactos a mostrar tengan dirección, correo o número de teléfono de manera obligatoria.

  1: var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker(); 
  2:  
  3: contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Address); 
  4:  
  5: var contact = await contactPicker.PickContactAsync(); 
  6:  
  7: if (contact != null) 
  8: {
  9:     TextBlock.Text = contact.FirstName; 
  10: }

ContactManager

Por otro lado, existe una manera de acceder a los contactos del teléfono de una manera no tan visible, para lo cual nosotros mediante código insertamos los parámetros por los cuales queremos filtrar la lista completa, y mediante lo cual obtendremos un listado de contactos con el cual trabajar.

De esta manera, al no mostrar al usuario que estamos seleccionando contacto de una manera plenamente visual, debemos declarar en el manifiesto de la aplicación que se requiere explícitamente el acceso a los contactos.

  1: var contactsStore = await ContactManager.RequestStoreAsync(); 
  2:  
  3: // The no arguments version of FindContactsAsync returns all contacts._ 
  4: // Can pass a string argument that the system uses as search text, returning _ 
  5: // contacts for which the string matches name, email address, or phone number IReadOnlyList<Contact> _ 
  6:  
  7: var contacts = await contactsStore.FindContactsAsync();_ 
  8:  
  9: var dlg = await new Windows.UI.Popups.MessageDialog(
  10:                               "Found " + contacts.Count + " contacts!").ShowAsync(); 
  11:  
  12: TextBlock.Text = contacts.First().FirstName;

Cabe resaltar que en ambos modos de acceso a contactos estamos obteniendo un listado de todos los contactos disponibles en el teléfono, tanto de Hotmail como de cualquier otro grupo que tengamos sincronizado en el dispositivo, por lo que obtendremos un contacto o un listado de los mismos, sobre los cuales solo tendremos permisos de lectura, al no ser posible su edición fuera de su propio ámbito.

Creando nuestros propios grupos y contactos

Por otro lado, tenemos la posibilidad de crear nuestro propio grupo de contactos, en el cual podremos crear, leer y modificar los contactos que incluyamos ahí, y que será accesible desde otras aplicaciones del dispositivo, como la aplicación de Contactos. Para poder emplear esta funcionalidad, deberemos tener marcado el acceso a los contactos en el manifiesto de la aplicación.

Cada aplicación puede generar un único grupo de contactos, al cual se le irán añadiendo los elementos en cuestión.

Para generar un contacto, debemos crear una nueva instancia de StoredContact, al cual pasamos como argumento el grupo de contactos de la aplicación. Una vez hecho esto, añadimos los parámetros que queremos que tenga nuestro contacto y lo almacenamos.

  1: ContactStore store = await ContactStore.CreateOrOpenAsync(); 
  2:  
  3: StoredContact contact = new StoredContact(store); 
  4:  
  5: contact.RemoteId = Guid.NewGuid().ToString(); 
  6: contact.GivenName = "José Vicente"; 
  7: contact.FamilyName = "Apellidos"; 
  8: contact.DisplayName = "Josevi"; 
  9:  
  10: IDictionary<string, object> props = await contact.GetExtendedPropertiesAsync(); 
  11:  
  12: props.Add("Password", "SecretPassword"); 
  13:  
  14: await contact.SaveAsync(); 

01 02

Una vez ejecutado el código podemos ver que tras seleccionar que nos muestre los contactos de nuestra aplicación, el contacto que acabamos de crear aparece en la aplicación nativa del sistema como cualquier otro.

Un saludo,

Josevi Agulló (@josevi_7)

Comments

  • Anonymous
    June 24, 2015
                       SOY USUARIO DE OUTLOOK.COM DESDE HACE  MUCHOS AÑOS Y CONTINUAMENTE HE SOLICITADO ACTUALIZAR                    EL ADMISTRADOR DEL SISTEMA POR TENER PROGRAMAS DESACTUALIZADOS. LOS PROGRAMAS YA SON OBSO-                    LETOS Y LOS USUARIOS TIENEN QUE BUSCAR AYUDA  TANTO A fACEBOOK.COM, GOOGLE.COM Y OTROS.                    SIRVANSE PRESTAR LA AYUDA NECESARÍA. ATENTAMENTE                    Mario Alayo Carranza                    (plenguecuglievan@outlook.com)                     Lima, 25/O6/2015