38

Can you please tell me how to launch the Add Contact' activity in android? Thank you.

hap497
  • 154,439
  • 43
  • 83
  • 99

8 Answers8

61

API Level 5 and above solution

// Add listener so your activity gets called back upon completion of action,
// in this case with ability to get handle to newly added contact
myActivity.addActivityListener(someActivityListener);

Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);

// Just two examples of information you can send to pre-fill out data for the
// user.  See android.provider.ContactsContract.Intents.Insert for the complete
// list.
intent.putExtra(ContactsContract.Intents.Insert.NAME, "some Contact Name");
intent.putExtra(ContactsContract.Intents.Insert.PHONE, "some Phone Number");

// Send with it a unique request code, so when you get called back, you can
// check to make sure it is from the intent you launched (ideally should be
// some public static final so receiver can check against it)
int PICK_CONTACT = 100;
myActivity.startActivityForResult(intent, PICK_CONTACT);
zwickilton
  • 741
  • 6
  • 8
  • 1
    This almost works for me but my onActivityResult method is not being called (the first line in this response was omitted because there is no method addActivityListener as far as I can tell) – Akeem Mar 12 '12 at 03:21
  • how does one get back the name and number added from the returned intent in onActivityResult? – nmvictor Oct 29 '14 at 07:28
  • I prefere to use **ACTION_INSERT_OR_EDIT** instead of **ACTION_INSERT** – Alecs Jun 16 '15 at 09:02
  • Just change ACTION_INSERT with ACTION_INSERT_OR_EDIT in the previous source code – Alecs Jan 02 '18 at 10:05
46

These two lines do the trick:

    Intent intent = new Intent(Intent.ACTION_INSERT, 
                               ContactsContract.Contacts.CONTENT_URI);
    startActivity(intent);
Vikram Gupta
  • 6,496
  • 5
  • 34
  • 47
16

This should be the snippet your are looking for:

Intent addContactIntent = new Intent(Contacts.Intents.Insert.ACTION, Contacts.People.CONTENT_URI);
addContactIntent.putExtra(Contacts.Intents.Insert.NAME, "Jean-Claude"); // an example, there is other data available
startActivity(addContactIntent)
Gautier Hayoun
  • 2,922
  • 24
  • 17
10

If you have a phone no and want to save it in your own application then use this code it will move you to the "create contact" page of the default contact app.

  Intent addContactIntent = new Intent(Intent.ACTION_INSERT);
  addContactIntent.setType(ContactsContract.Contacts.CONTENT_TYPE);
  addContactIntent.putExtra(ContactsContract.Intents.Insert.PHONE,phnno.getText().toString());
  startActivity(addContactIntent);
Soner Gönül
  • 97,193
  • 102
  • 206
  • 364
Pir Fahim Shah
  • 10,505
  • 1
  • 82
  • 81
10

This post may help you out or at least point you in the right direction.

Hope this helps.

Update 05/11/2015:

Per the comments, check out vickey's answer below for the appropriate solution.

Community
  • 1
  • 1
Anthony Forloney
  • 90,123
  • 14
  • 117
  • 115
  • No. I am looking for how can I launch Android's Add Contact Activiy programmically. I tried both this and remove the commented code, both do not work. Intent intent = new Intent("android.intent.action.INSERT"); //intent.setType("vnd.android.cursor.item/person"); startActivity(intent); – hap497 Dec 16 '09 at 00:06
  • This answer is really old, here is the correct code as mentioned below: Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI); startActivity(intent); – Laith Alnagem Mar 19 '13 at 00:09
  • doesn't look like an answer. You can't just answer with the links to other answers. – Vladyslav Matviienko Jul 11 '17 at 08:43
8

I was also trying to do this. I was able to launch the activity using Android 2.2. I haven't tried using/testing this in other SDK versions though.

Intent intent = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT, Uri.parse("tel:" + currentNum.getText())); //currentNum is my TextView, you can replace it with the number directly such as Uri.parse("tel:1293827")
intent.putExtra(ContactsContract.Intents.EXTRA_FORCE_CREATE, true); //skips the dialog box that asks the user to confirm creation of contacts
startActivity(intent);

Hope this might help.

Zarah
  • 5,179
  • 2
  • 29
  • 29
5

If you need to add a phone number to an existing contact or create a new one (just as the native dialer does with a new phone number) this code might be just what you need:

final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.putExtra(Insert.PHONE, digits);
intent.setType(People.CONTENT_ITEM_TYPE);
startActivity(intent);

Just take a look at the Android's source code for the DialpadFragment class, search for the method getAddToContactIntent(String digits).

But as the People class is deprecated in api 10 you may want to use this line instead:

intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
halex
  • 16,253
  • 5
  • 58
  • 67
mike.adc
  • 191
  • 3
  • 11
1
Intent localintent = new Intent("android.intent.action.INSERT",ContactsContract.Contacts.CONTENT_URI);
localintent.putExtra("phone", phoneNumber);
startActivity(localintent);
Nathan Tuggy
  • 2,237
  • 27
  • 30
  • 38
Mushtaq Rahim
  • 129
  • 1
  • 13