You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic 7中@ionic-native/call-number/ngx在Android测试返回plugin_not_installed

解决Ionic 7中@ionic-native/call-number/ngx插件"plugin_not_installed"错误

核心问题

你只配置了Ionic Native的上层封装,却没安装底层对应的Cordova插件,这是触发该错误的最常见原因。

分步解决方法

1. 安装底层Cordova插件

在项目根目录执行以下命令,确保底层插件和Native封装都正确安装:

ionic cordova plugin add call-number
npm install @ionic-native/call-number

注意:命令执行过程中如果出现报错,要先解决依赖冲突或网络问题,确保安装完全成功。

2. 验证插件配置

打开项目根目录的config.xml,检查是否存在这条配置:

<plugin name="call-number" spec="^1.0.4" />

如果没有,手动添加后保存,再重新构建项目。

3. 完整构建部署,不要用热重载

热重载不会加载新安装的Cordova插件,必须执行完整构建并重新部署到设备:

# 先构建Android包
ionic cordova build android --prod
# 重新安装到测试设备
ionic cordova run android --device

4. 确认Ionic Native版本兼容性

Ionic 7要求@ionic-native系列包的版本至少为6.x,执行命令检查当前版本:

npm list @ionic-native/call-number

如果版本低于6.x,卸载后重新安装兼容版:

npm uninstall @ionic-native/call-number
npm install @ionic-native/call-number@latest

5. 确保在设备就绪后调用插件

Cordova插件只能在设备完全就绪后使用,必须把调用逻辑放在platform.ready()回调里:

import { Platform } from '@ionic/angular';
import { CallNumber } from '@ionic-native/call-number/ngx';

constructor(private platform: Platform, private callNumber: CallNumber) {}

makePhoneCall() {
  this.platform.ready().then(() => {
    this.callNumber.callNumber('1234567890', true)
      .then(res => console.log('拨号器已启动', res))
      .catch(err => console.log('启动拨号器失败', err));
  });
}

6. 检查Android权限配置

打开platforms/android/app/src/main/AndroidManifest.xml,确认是否添加了拨号权限:

<uses-permission android:name="android.permission.CALL_PHONE" />

针对Android 6.0及以上系统,还需要动态申请权限(需先安装@ionic-native/android-permissions插件):

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

// 调用拨号前先检查权限
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CALL_PHONE)
  .then(result => {
    if (result.hasPermission) {
      this.callNumber.callNumber('1234567890', true);
    } else {
      this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CALL_PHONE);
    }
  })
  .catch(err => console.log(err));

额外排查点

  • 如果你用的是Capacitor而非Cordova,要安装对应适配插件并同步:npm install call-number && npx cap sync
  • 暂时禁用其他非必要插件,排查是否存在插件冲突问题

内容的提问来源于stack exchange,提问作者Dhrubojyoti Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 09:55:01