2010-04-09 16 views
5

Tengo un widget que abrirá la lista de contactos por un número de teléfono. Estoy usando Contacts.Intents.SHOW_OR_CREATE_CONTACT Sé que está en desuso, pero quiero que esto funcione en Android 1.6. Tengo un número de teléfono para usar en el intento de búsqueda. Aquí está el códigoAndroid - Mostrar la lista de contactos con el mismo número de teléfono

Intent contViewIntent = new Intent(Contacts.Intents.SHOW_OR_CREATE_CONTACT); 
contViewIntent.setData(Uri.fromParts("tel", number, null)); 

PendingIntent contPendIntent = PendingIntent.getActivity(context, 0, contViewIntent, 0); 
views.setOnClickPendingIntent(viewID, contPendIntent); 

Cuando la lista de contactos tiene 2 o más contactos con el mismo número a continuación, esto abrirá la lista de contactos y tiene el usuario seleccione uno. Esto funciona bien en 1.6, pero en 2.0 y superior muestra una lista de contactos con solo el número 1 o el número 2 en los nombres y cuando selecciona uno de los de la lista para ver, obtiene un error.

04-09 19: 12: 47.891: ERROR/CursorWindow (105): Bad solicitud para la ranura campo 0,6. numRows = 2, númeroColumnas = 6

04-09 19: 12: 47.992: ERROR/Android Runtime (105): java.lang.IllegalStateException: obtener ranura campo de la fila 0 col 6 fallaron

¿cómo hago para que funcione en 1.6 y 2.0 arriba?

+0

Creo que el error está tratando de decir que espera una fila, pero ¿está obteniendo dos? Tal vez la aplicación de contacto en la versión posterior de Android haya eliminado la funcionalidad de selección de contacto que mencionas. - Solo una suposición – DEzra

Respuesta

0

creo que puede ser mejor usar el Android API proveedor de contenido en combinación con una consulta SQL (encontrar la fila o filas con fósforo número de teléfono):

http://developer.android.com/guide/topics/providers/content-providers.html

A continuación, puede mostrar una pantalla de opción de pedir usuario para seleccionar qué contacto es apropiado si la consulta devuelve dos contactos.

Luego puede pasar el campo _id (que es único) a la aplicación de contactos para abrir el contacto seleccionado (evitando el error que ve).

1

Android 2.0 tiene completamente nueva API para administrar contactos (buscar ContactosContrato). En mi aplicación, terminé escribiendo la gestión de contactos de bajo nivel dos veces: una para 2.0, una para 1.6 y menos (reviso a través de la reflexión para ver si existe la clase ContactsContract y cambio al código 2.0+ en ese caso).

Cuestiones relacionadas