Как перезагрузить данные контактов с контактами Ionic и Cordova? - PullRequest
2 голосов
/ 11 октября 2019

В приложении Ionic 4 я использую Cordova Contacts для извлечения всех контактов устройства с помощью метода find. Он работает нормально, за исключением того, что когда я получаю контакты в приложении, затем переключаюсь в приложение телефона, изменяю контакт (например, добавляю адрес электронной почты), сохраняю его, возвращаюсь в мое приложение и снова получаю доступ к списку контактов, это необновляется с новым адресом электронной почты, даже если метод find вызывается снова.

Однако если я выйду из приложения и перезапущу, то изменения контакта появятся.

Объект Contacts являетсяполе ионного / углового сервиса, инициализируется конструктором сервиса. Я также пытался воссоздать этот объект всякий раз, когда вызывается метод find, но это не помогает.

export class DeviceContactService {
  constructor(private contacts: Contacts) { }

  getDeviceContacts(): Observable<any> {
    // this.contacts = new Contacts() // does not work better
    let fields : ContactFieldType[] = [ "displayName"]
    let options = new ContactFindOptions();
    options.filter = ""
    options.multiple = true
    options.desiredFields = [ 
      "displayName",  
      "name", 
      "emails", 
      "phoneNumbers" 
    ]
    let prom = this.contacts.find(fields, options)
    ...
  }
}

Я ожидал обещания вернуть список контактов с самой последней информацией, хранящейся вбаза данных контактов устройства, но этого не происходит. Он всегда возвращает данные такими, какими они были до изменения базы данных контактов.

...