ionic 3 - Как получить номер входящего телефонного звонка? - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь получить номер входящего звонка в ionic 3. Я делаю это с https://www.npmjs.com/package/cozzbie.plugin.phonecalltrap. Он хорошо определяет состояние телефона, но не возвращает номер входящего телефона.

Я использую код ниже,

declare var PhoneCallTrap:any;

if (PhoneCallTrap) 
    {
      PhoneCallTrap.onCall(function(obj) {
        var callObj = JSON.parse(obj),
            state = callObj.state,
            callingNumber = callObj.incomingNumber;

        switch (state) {
            case "RINGING":
                console.log("Phone is ringing =" + callingNumber);
                break;
            case "OFFHOOK":
                console.log("Phone is off-hook");
                break;

            case "IDLE":
                console.log("Phone is idle");
                break;
        }
      });
    } 

Есть ли другая идея или плагин для получения номера телефонного звонка

1 Ответ

0 голосов
/ 30 апреля 2019

Вы используете правильный плагин и ваш код в порядке, но вам просто нужно добавить правильное разрешение Android для доступа к данным с мобильного телефона. Для этого следуйте этому коду.

Добавьте этот плагин к вашему проекту:

Откройте файл app.module.ts и добавьте так:

import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';

providers: [ AndroidPermissions ],

Откройте файл homePage.ts, импортируйте AndroidPermissions и добавьте этот код:

import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';

declare var PhoneCallTrap: any;

constructor(public androidPermissions: AndroidPermissions){
  this.checkPermissionCall();
  this.checkPermissionREAD_CONTACTS();
}

//READ_PHONE_STATE
checkPermissionCall() {
  this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.READ_PHONE_STATE).then(
    success => {
      //if permission granted
      this.phonecalls();
    },
    err => {
      this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_PHONE_STATE).
        then(success => {
          this.phonecalls();
        },
          err => {
            console.log("cancelled")
          });
    });
  this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.READ_PHONE_STATE]);
}

//READ_PHONE_STATE
checkPermissionREAD_CONTACTS() {
  this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.READ_CONTACTS).then(
    success => {
      //if permission granted
    },
    err => {
      this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_CONTACTS).
        then(success => {
        },
          err => {
            console.log("cancelled")
          });
    });
  this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.READ_CONTACTS]);
}

//phone calls
phonecalls() {
  PhoneCallTrap.onCall(function (obj) {

    var callObj = JSON.parse(obj),
      state = callObj.state,
      callingNumber = callObj.incomingNumber;

    switch (state) {
      case "RINGING":
        console.log("Phone is ringing", callingNumber);
        break;
      case "OFFHOOK":
        console.log("Phone is off-hook");
        break;

      case "IDLE":
        console.log("Phone is idle");
        break;
    }
  });
}

Я стараюсь как ты, но я не могу получить номер, но после тяжелой работы и поиска я получил это, и с этим ты получишь номер и состояние.

Надеюсь, это поможет вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...