|
Android Contacts – Invoke the Edit Contact IntentBy Radu Motisan Posted on March 19th, 2011 , 1500 Views (Rate 1.88) |
Sometimes, when working with Android contacts, you will need a quick way of showing a contact page, including all the associated fields.
Android has the advantage of reusing almost any piece of code available and the system standard controls make no exception - so you can use the system contacts dialog to load/edit a pre-existing contact.
To open a contact using the Intent.ACTION_EDIT, we have a few variants, with different results:
Uri uri = Uri.parse(iduri); i.setData(uri); Intent i = new Intent(Intent.ACTION_EDIT); i.setData(Uri.parse(ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + id)); startActivityForResult(i, idEDIT_CONTACT);
works, but it has some issues on a few Android devices.
Intent i = new Intent(Intent.ACTION_EDIT); i.setData(Uri.parse(ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + id)); startActivityForResult(i, idEDIT_CONTACT);
This works best, and in the case of aggregated contacts, will ask you to select the particular contact you want to open. Using startActivityForResult and onActivityResult, we get a notification when the system form has been closed (either by using Cancel or Save).
![]() |
![]() |
![]() |
![]() |
Alternatively you can first search for a contact (using Name, phone number, etc) and then get the Contact_ID to open the Edit contact Intent . Here is the source code for this sample. It first creates a contact, then it opens it using the lookup key.
AndroidContacts-3
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, read_id); i.setData(contactUri); startActivityForResult(i, idEDIT_CONTACT);
Where read_id is a long containing the contact id.
|
|



























March 19th, 2011 at 10:40 pm
[...] a new Contact using ContentProvider Android Contacts – Custom Contact column to get the LOOKUPKEY Android Contacts – Invoke the Edit Contact Intent Android Contacts – Searching for [...]