Как я могу запустить действие «Добавить контакт» в android
Не могли бы вы рассказать мне, как запустить функцию «Добавить контакт» в Android? Спасибо.
- ArrayIndexOutOfBoundsException с пользовательским адаптером Android для нескольких видов в ListView
- Предотвратить показ веб-страницы «веб-страница недоступна»
- Восстановить окно LogCat в Android Studio
- Android: View.setID (int id) программно - как избежать конфликтов идентификаторов?
- Как показать несколько маркеров в MapFragment в Google Map API v2?
- Как использовать asynctask для отображения индикатора выполнения, который учитывается?
- Ошибка: исправить конфликт версии (плагин google-services)
- Android маршрутизирует маршрут по карте с двумя POI-s
Это сообщение может помочь вам или, по крайней мере, указать вам в правильном направлении.
Надеюсь это поможет.
Обновление 05/11/2015:
По комментариям, посмотрите на ответ Вики ниже для соответствующего решения.
API уровня 5 и выше
// 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);
Эти две линии делают трюк:
Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI); startActivity(intent);
Это должен быть fragment, который вы ищете:
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)
Если у вас нет телефона и вы хотите сохранить его в своем собственном приложении, используйте этот код, чтобы он переместил вас на страницу «создать контакт» контактного приложения по умолчанию.
Intent addContactIntent = new Intent(Intent.ACTION_INSERT); addContactIntent.setType(ContactsContract.Contacts.CONTENT_TYPE); addContactIntent.putExtra(ContactsContract.Intents.Insert.PHONE,phnno.getText().toString()); startActivity(addContactIntent);
Я тоже пытался это сделать. Я смог запустить эту работу с помощью Android 2.2. Однако я не пытался использовать / тестировать это в других версиях SDK.
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);
Надеюсь, это поможет.
Если вам нужно добавить номер телефона к существующему контакту или создать новый (так же, как это делает родной номер с новым номером телефона), этот код может быть именно тем, что вам нужно:
final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); intent.putExtra(Insert.PHONE, digits); intent.setType(People.CONTENT_ITEM_TYPE); startActivity(intent);
Просто взгляните на исходный код Android для classа DialpadFragment
, найдите метод getAddToContactIntent(String digits)
.
Но поскольку class People устарел в api 10, вы можете использовать эту строку вместо этого:
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
Intent localintent = new Intent("android.intent.action.INSERT",ContactsContract.Contacts.CONTENT_URI); localintent.putExtra("phone", phoneNumber); startActivity(localintent);