Откройте контактную активность Android с некоторыми полями, которые уже вставлены

1
ArrayList<ContentValues> data = new ArrayList<ContentValues>();
ContentValues row1 = new ContentValues();
row1.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE);
row1.put(Organization.COMPANY, "Android");
data.add(row1);
ContentValues row2 = new ContentValues();
row2.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
row2.put(Email.TYPE, Email.TYPE_CUSTOM);
row2.put(Email.LABEL, "Green Bot");
row2.put(Email.ADDRESS, "[email protected]");
data.add(row2);
Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
intent.putParcelableArrayListExtra(Insert.DATA, data);
startActivity(intent);

Я не нашел его в android.provider.ContactsContract.Intents.Insert.Data (который используется во второй последней инструкции), нет переменной данных в классе Insert, я использую API-8 v2.2. Пожалуйста, помогите, это их любая другая способ сделать это? Я хочу заполнить данные в добавить контакт, как это.

  • 0
    Почему вы вставили теги «pre» и «code»? Пожалуйста, отформатируйте ваш код и опишите вашу проблему более подробно!
  • 1
    Не удалось найти ContactsContract.Intents.Insert.Data поскольку он доступен только с API 11.
Теги:

2 ответа

2
Лучший ответ

Если вы посмотрите на javadoc для ContactsContract.Intents.Insert, вы увидите кучу констант, таких как COMPANY, JOBTITLE и т.д. Вы должны использовать их для заполнения дополнительных настроек вашего намерения. Используйте только ключ DATA, если вы не видите константу. Документация на это не ясна, но на самом деле приложение People принимает только некоторые значения столбцов в DATA.

Например, вместо того, чтобы делать

row.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE); row.put(Organization.COMPANY, "Android");

делать

intent.putExtra(Intents.Insert.COMPANY, "Android");

Это должно сработать.

Я не уверен, что вы подразумеваете под "нет переменной данных в классе Insert". Не должно быть. Insert.DATA - это константа, которая называет ключ для putExtra.

  • 0
    нет никаких постоянных Intents.Insert.Website, а также Intents.Insert.LastName, как мне это сделать, пожалуйста, скажите мне ..
1

Возможно, вы импортировали Contacts.Intents.Insert. В этом классе нет данных.

Вам нужно импортировать ContactsContract.Intents.Insert.

Для веб-сайта попробуйте этот код,

  ArrayList<ContentValues> data = new ArrayList<ContentValues>();
  ContentValues row1 = new ContentValues();
  row1.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE);
  row1.put(Website.URL, "www.urwebsite.com");
  row1.put(Website.LABEL, "abc");
  row1.put(Website.TYPE, Website.TYPE_HOME);
  data.add(row1);
  Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
  intent.putParcelableArrayListExtra(Insert.DATA, data);
  startActivity(intent);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню