Selector de varios contactos de Android (con la opción de elegir qué número de teléfono)
Necesito poder seleccionar varios contactos en Android. El flujo es así:
- El usuario hace clic en un botón que abre la aplicación Contactos.
- Sin embargo, en vez de poder seleccionar un solo contacto, necesito poder seleccionar varios contactos (en el mismo lanzamiento de la intención).
- Si un contacto tiene varios números de teléfono, necesito que el usuario pueda elegir el número de teléfono que desea seleccionar.
Esta característica ya está presente en mi Samsung Android Phone (Running 2.3 Gingerbread) cuando hago clic en "Contactos" en la aplicación Mensajería. Vea la captura de pantalla abajo:
- Cómo manejar la excepción OutOfMemory
- Android ParcelFileDescriptor.createPipe () para Froyo?
- Descarga de archivos en API <9
- Comprobación del dispositivo (Samsung vs otros)
- ¿Por qué el ContentObserver se llama varias veces?
- No se pudo encontrar el archivo INI en $ ANDROID_AVD_HOME ni en $ HOME / .android / avd
- Cambiar de maestro AOSP a froyo
- Drawable vs. Bitmap
- ContentProvider sin SQL
- Algunos usuarios no pueden instalar la aplicación ya que installLocation se agrega al manifiesto
- Algunos componentes de SDK de Android no quieren instalar.¿Por qué?
- No se encontró actividad para manejar Intención: android.intent.action.VIEW
- DropBoxManager casos de uso?
No hay construido en forma de hacer esto, por lo que necesita hacer la mayor parte del trabajo por ti mismo. Afortunadamente, no es tan difícil.
Monitor
Para mostrar sus contactos, puede utilizar una vista de lista con el modo de selección de selección múltiple o puede crear un adaptador personalizado y vincularlo a una vista de lista normal. No creo que el listview con multi-select le permita poner nada que no sea texto para cada fila, pero tendría que cavar más profundo para averiguarlo.
He utilizado el método del adaptador personalizado para algo muy similar (excepto la parte de varios números de teléfono). Es bastante fácil de hacer y encontrar adaptadores personalizados son realmente útiles en el largo plazo.
Tutorial de ListView de adaptador personalizado
Con una configuración de adaptador personalizada, puede crear objetos de datos con toda la información de una persona, incluyendo su nombre y número (s) de teléfono. En el getView de su adaptador personalizado, puede decidir qué / cómo y dónde mostrar cada información.
Reuniendo información
Tendrá que utilizar la API de ContactContract para obtener información para sus contactos.
Información de contacto de Reading
Leer TODOS los números de teléfono de un contacto
Tendrás que escribir todo esto tú mismo. Puede utilizar el proveedor ContactsContract
para consultar todos los contactos con números de teléfono y, a continuación, para el contacto seleccionado puede consultar todos los números de teléfono de ese contacto. Puede mostrar los resultados en las actividades o diálogos como mejor le parezca.
Lamentablemente, este código no es compatible con todas las versiones de android
Sé que es un poco tarde pero quería compartir esto! He encontrado un código incompleto en la red y después de agrietarme la cabeza con ella finalmente encontré la respuesta! Básicamente, se inicia el selector y se deja volver los datos en los extras =]
No había una respuesta completa en la red, así que espero que ayude a un alma por ahí!
Disfrutar:
public void pickContact(View v){ try { Intent phonebookIntent = new Intent("intent.action.INTERACTION_TOPMENU"); phonebookIntent.putExtra("additional", "phone-multi"); startActivityForResult(phonebookIntent, PICK_CONTACT); // PICK_CONTACT IS JUST AN INT HOLDING SOME NUMBER OF YOUR CHOICE } catch (Exception e) { e.printStackTrace(); } } public String getData(String contact, int which) { return contact.split(";")[which]; } public void onActivityResult(int reqCode, int resultCode, Intent data) { final int URI = 0; final int NUMBER = 1; if (RESULT_OK != resultCode) return; Bundle contactUri = data.getExtras(); if (null == contactUri) return; ArrayList<String> contacts = (ArrayList<String>)contactUri.get("result"); Toast.makeText(getApplicationContext(), getData(contacts.get(0),NUMBER), Toast.LENGTH_SHORT).show(); }
- La pantalla se oscurece y requiere una pulsación extra del botón de retroceso después de regresar de PreferenceActivity
- Android – <include layout = … /> devuelve el error