【问题标题】:We cannot get the native access to contacts list using the cordova plugin我们无法使用 cordova 插件获得对联系人列表的本地访问权限
【发布时间】:2020-11-17 13:45:32
【问题描述】:

我们正在尝试使用 cordova-plugin-contacts 获得对电话联系人列表的本地访问(ios/android 测试设备和模拟器都试过了!)。

我们已经尝试了我们可以找到的网络上的所有线程,并尝试了各种方法/教程,但似乎没有任何效果。当 .ts 失败时,我们只是得到空白屏幕。我们已经尝试过简单的项目,但在这一点上失败了!我们了解到,出于安全考虑,cordova 不再支持该代码,但我们知道人们仍然能够以某种方式使用该代码。

我们的结构: 离子 CLI 4.12.0

Angular CLI 7.3.6

科尔多瓦 CLI 9.0.0

NodeJS 11.12.0

其他人尝试过: npm install @ionic-native/contacts

在提供者中:


import { Contacts } from '@ionic-native/contacts';

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
  providers: [
    StatusBar,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
    Contacts
  ],
  bootstrap: [AppComponent]
})

export class AppModule {}

HTML:

<ion-header>
  <ion-toolbar>
    <ion-title>Contact</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content padding>

  <ion-list>
    <ion-item *ngFor="let contact of contactsFound">

        <h3 style="padding-top: 5rem;">{{contact?.displayName}}</h3>

        <!--Recorro el numero de cada contacto-->
        <p *ngFor="let num of contact?.phoneNumbers">
          {{num.value}}
        </p>

    </ion-item>
  </ion-list>

</ion-content>

在 .ts 中:

import { Component } from '@angular/core';
import { NavController, NavParams } from '@ionic/angular';

//Importo la libreria de contactos...
import { Contacts, ContactFieldType, IContactFindOptions} from "@ionic-native/contacts";

//Definimos el selector y los templates y estilos...
@Component({
  selector: 'app-contact',
  templateUrl: 'contact.page.html'
})

//Clase Principal de la pagina de Contactos...
export class ContactPage {

  ourtype: ContactFieldType[] = ["displayName"];
  contactsFound = [];

  constructor(public navCtrl: NavController, private contacts: Contacts){
    this.search('');
  }

  //Metodo para buscar un contacto con el metodo find();
  search(q){

    const option: IContactFindOptions = {
      filter: q
    }

    this.contacts.find(this.ourtype, option).then(cont => {
      this.contactsFound = cont
    })
  }

}

我们尝试添加警报,但代码中的所有警报都失败了……它就死了!

【问题讨论】:

  • 这是我们的课程 @Rahul export class ContactPage{ ourtype: ContactFieldType[] = ["displayName"];联系人发现 = [];构造函数(公共 navCtrl:NavController,私人联系人:联系人,私人平台:平台){ const 选项:ContactFindOptions = { 过滤器:“”} this.platform.ready().then(() => { alert("INSIDE READY" ) this.contact.find(this.ourtype, option).then((cont) => { alert("INSIDE FIND"); this.contactsFound = cont; }) }); } }

标签: angular cordova ionic-framework ionic4


【解决方案1】:

HI Matt 监听平台就绪事件,一旦触发,则只有您可以访问本机功能,如联系人相机等。

例如:

this.platform.ready().then(() => {
    // access contact here  contact.find call 
});

【讨论】:

  • 感谢您的指点,我们现在可以在 contact.find 方法之前获得警报,但从那时起仍然没有任何效果。
  • 我们需要企业版的 ionic 来访问它吗?
【解决方案2】:
import { Contacts, ContactFieldType, IContactFindOptions} from "@ionic-native/contacts";

我无法在构造函数中使用 Contacts 类,因为它已被弃用。请提出替代方案。我尝试使用“dbaq/cordova-plugin-contacts-phone-numbers”,navigator.contactsPhoneNumbers 显示空对象{}navigator.contactsPhoneNumbers 对象中没有 list() 函数。

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2010-12-05
    相关资源
    最近更新 更多