2011-12-21 9 views
15

Quiero que mi solicitud para pedir al usuario para crear un nuevo contacto, a través de la interfaz estándar Contactos en Android. Entonces quiero poder leer la información del contacto recién creado.Agregar intención de contactos no devuelve datos onActivityResult bajo ICS

Mi código se basa en la "Adición de un nuevo contacto" de this sitio.

Intent intent = new Intent(Intent.ACTION_INSERT); 
intent.setType(Contacts.CONTENT_TYPE); 
intent.putExtra(ContactsContract.Intents.Insert.PHONE, number); 
startActivityForResult(intent, PICK_CONTACT); 

y luego

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Intent intent = new Intent(this, Foo.class); 
    Uri uri = data.getData(); //I get nullpointer here on ICS 
    intent.putExtra("contact", ContactAccessor.getInstance().loadContact(this, uri)); 
    startActivity(intent); 
    finish(); 
} 

Este código funciona muy bien en Android 2.2 y 2.3. Inicia la aplicación de contactos y permite que el usuario ingrese cosas como el nombre y la dirección de correo electrónico, y cuando hayan terminado, presiona "Aceptar" o "Guardar" o "Lo que sea" que regrese a mi aplicación y puedo leer las cosas que ingresaron. En Android 4.0 (ICS), sin embargo, no regresa a mi aplicación cuando el usuario termina de crear el contacto. Y cuando salgo de la vista de contacto (a través del botón Atrás) no incluye ningún intento con la información de contacto.

Qué intención debería utilizar para obtener el mismo comportamiento en ICS?

+0

estoy teniendo el mismo problema :( –

+0

http://stackoverflow.com/questions/9551821/android-4-0-3-and-finish-activity estoy teniendo problema similar. – user1247617

+0

mi El problema es que funciona si abro otra actividad y regreso a la actividad principal en onActivityResult() pero cuando trato de capturar imagen usando intento onActivityResult() llamado antes de capturar o cancelar evento de cámara. Y este problema ocurre en Android 4.03 (probando me hTC) –

Respuesta

15

Para Android 4.0.3 en adelante, es necesario proporcionar un nuevo intento adicional:

public static final de cadena INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED = "finishActivityOnSaveCompleted";

intent.putExtra (INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);

No tengo una solución para Android 4.0 a 4.0.2.

¿Alguien?

+1

esto es grande! Muchísimas gracias. Acabo de intentar esto en un Galaxy Nexus con 4.0.4 y funcionó como un encanto! La estúpida Galaxy Nexus de Verizon todavía está atascado en 4.0.2 por lo que esta solución todavía doesn' No funciona, pero espero que Verizon lo actualice pronto. ¡Gracias de nuevo! –

+1

Me salvó un montón de dolores de cabeza, gracias! Resulta que esto está documentado, aunque encontrar dónde mirar en los documentos de Android es, por supuesto, su propio dolor de cabeza. http://developer.android.com/training/contacts-provider/modify-data.html en "Agregar el indicador de navegación" – Groxx

+0

Esto no funciona en Android 4.4.2. Por favor, comparta si tiene alguna solución o sepa qué cambió. Thx – Sandra

Cuestiones relacionadas