我如何控制 IONIC 中的调用弹出选项

How can i control call popup options in IONIC

这是我的情况,我的 Ionic 5 应用程序中有一个联系人列表,每个联系人可以包含一个或多个 phone 号码。其中一些可能是移动的并且也支持 SMS。所以现在当我在我的列表中创建 phone 数组时,我使用下面的代码允许用户发起呼叫

  <p *ngIf="phone.type === 'Mobile'">
    <ion-icon class="big center green" ios="car"></ion-icon> 
    <a (click)="dialNumber(phone.number)">({{phone.number | slice:0:3 }})
            {{phone.number | slice:3:6 }}-{{phone.number | slice:6:10 }}
    </a>
  </p>

dialNumber(nbr: string) {
    this.callNumber.callNumber(nbr, true)
  .then(res => console.log('Launched dialer!', res))
  .catch(err => console.log('Error launching dialer', err));
  }

以上代码在屏幕下方创建了一个弹出窗口,其中包含呼叫该号码和取消的选项。我实际上想做的是显示联系人的所有号码,以便用户可以单击所需的号码。我也希望能够在弹出窗口中包含将触发 SMS 与呼叫的项目。 所以我的问题是我将如何去控制弹出窗口并添加额外的 nbrs 并可能允许 SMS。

这是目前的截图

您似乎正在使用 this Cordova plugin,因此您无法更改该弹出窗口中显示的选项。

您可以做的是在用户点击联系人时显示您自己的自定义操作sheet,然后根据点击的联系人设置可用选项已被选中。

https://ionicframework.com/docs/api/action-sheet

import { Component } from '@angular/core';
import { ActionSheetController } from '@ionic/angular';

@Component({
  selector: 'action-sheet-example',
  templateUrl: 'action-sheet-example.html',
  styleUrls: ['./action-sheet-example.css'],
})
export class ActionSheetExample {

  constructor(public actionSheetController: ActionSheetController) {}

  async presentActionSheet() {
    const actionSheet = await this.actionSheetController.create({
      header: 'Albums',
      cssClass: 'my-custom-class',
      buttons: [
        {
          text: 'Delete',
          role: 'destructive',
          icon: 'trash',
          handler: () => {
            console.log('Delete clicked');
          }
        }, 
        {
          text: 'Share',
          icon: 'share',
          handler: () => {
            console.log('Share clicked');
          }
        }, 
        {
          text: 'Play (open modal)',
          icon: 'caret-forward-circle',
          handler: () => {
            console.log('Play clicked');
          }
        }, 
        {
          text: 'Favorite',
          icon: 'heart',
          handler: () => {
            console.log('Favorite clicked');
          }
        }, 
        {
          text: 'Cancel',
          icon: 'close',
          role: 'cancel',
          handler: () => {
            console.log('Cancel clicked');
          }
        }
      ]
    });
    
    await actionSheet.present();
  }

}

因此,在这种情况下,当用户点击联系人时,该用户会看到您的操作 sheet,其中包含发送短信和拨打电话的选项,如果用户选择拨打电话给您隐藏操作 sheet 然后调用 Cordova 插件。