Перейти к содержанию
Fire Monkey от А до Я
  • 0

Добавление контакта в телефонную книгу


AndroidHalfNoob

Вопрос

Может кому пригодится. Функцию нашел на  просторах интернета. Адаптировал по себя. На форме 5 edit-ов. Для фамилии, имени, отчества, номера телефона и электронной почты.

Подключаем модули.

Цитата

uses

  FMX.Helpers.Android, Androidapi.JNI.provider, Androidapi.JNI.JavaTypes,
  Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net, Androidapi.Jni.App,
  Androidapi.JNIBridge, Androidapi.Helpers, FMX.Platform.Android;

В проекте Options--->Uses Permissions ставим true в разделе Write contacts.

Функция добавления контакта

Цитата

procedure InsertToContacts(const displayName, firstName, lastName,  phone, eMail: string);
var
  ops: JArrayList;
  res: TJavaObjectArray<JContentProviderResult>;
  rawContactInsertIndex: integer;

const
  DATA_MIMETYPE    = 'mimetype';
  COMMON_DATA_TYPE = 'data2';

begin
  ops := TJArrayList.JavaClass.init;
  rawContactInsertIndex := ops.size;

  ops.add
  (
    TJContentProviderOperation.JavaClass.newInsert
      (
        TJContactsContract_RawContacts.JavaClass.CONTENT_URI
      ).withValue
        (
          TJSyncStateContract_Columns.JavaClass.ACCOUNT_TYPE, nil
        ).withValue
          (
            TJSyncStateContract_Columns.JavaClass.ACCOUNT_NAME, nil
          ).build
  );
     // name
  ops.add
  (
    TJContentProviderOperation.JavaClass.newInsert
      (
        TJContactsContract_Data.JavaClass.CONTENT_URI
      ).withValueBackReference
        (
          TJContacts_Entity.JavaClass.RAW_CONTACT_ID,
          rawContactInsertIndex
        ).withValue
          (
            StringToJString(DATA_MIMETYPE),
            TJCommonDataKinds_StructuredName.JavaClass.CONTENT_ITEM_TYPE
          ).withValue
          (
            TJCommonDataKinds_StructuredName.JavaClass.DISPLAY_NAME,
            StringToJString(displayName)
          ).withValue
          (
            TJCommonDataKinds_StructuredName.JavaClass.FAMILY_NAME,
            StringToJString(lastName)
          ).withValue
          (
            TJCommonDataKinds_StructuredName.JavaClass.GIVEN_NAME,
            StringToJString(firstName)
          ).build
      );
    // phone
  ops.add
    (
      TJContentProviderOperation.JavaClass.newInsert
        (
          TJContactsContract_Data.JavaClass.CONTENT_URI
        ).withValueBackReference
        (
          TJContacts_Entity.JavaClass.RAW_CONTACT_ID,
          rawContactInsertIndex
        ).withValue
        (
          StringToJString(DATA_MIMETYPE),
          TJCommonDataKinds_Phone.JavaClass.CONTENT_ITEM_TYPE
        ).withValue
        (
          TJCommonDataKinds_Phone.JavaClass.NUMBER,
          StringToJString(phone)
        ).withValue
        (
          StringToJString(COMMON_DATA_TYPE),
          StringToJString(IntToStr(TJCommonDataKinds_Phone.JavaClass.TYPE_MOBILE))
        ).build
    );
     // E-Mail
  ops.add
    (
      TJContentProviderOperation.JavaClass.newInsert
        (
          TJContactsContract_Data.JavaClass.CONTENT_URI
        ).withValueBackReference
        (
          TJContacts_Entity.JavaClass.RAW_CONTACT_ID,
          rawContactInsertIndex
        ).withValue
        (
          StringToJString(DATA_MIMETYPE),
          TJCommonDataKinds_Email.JavaClass.CONTENT_ITEM_TYPE
        ).withValue
        (
          TJCommonDataKinds_Email.JavaClass.ADDRESS,
          StringToJString(eMail)
        ).withValue
        (
          StringToJString(COMMON_DATA_TYPE),
          StringToJString(IntToStr(TJCommonDataKinds_Email.JavaClass.TYPE_WORK))
        ).build
    );

  try
    res := SharedActivityContext.getContentResolver.applyBatch(TJContactsContract.JavaClass.AUTHORITY,ops);
  except
    on E: Exception do
    ShowMessage('Что то пошло не так '+E.Message);
  end;
end;

На кнопку привязываем функцию

Цитата

procedure TForm1.Button1Click(Sender: TObject);

begin

 InsertToContacts(Edit1.Text,Edit2.Text,Edit3.Text,Edit4.Text,Edit5.Text);

 ShowMessage('Контакт добавлен');
 
end;

 

Изменено пользователем AndroidHalfNoob
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Теперь в RAD Studio 10.1 Berlin есть компонент TAddressBook, предназначенный для работы с адресной книгой на андроиде и йос.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...