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

运行时申请权限报错:TypeError: Object(...) is not a function at AndroidPermissions.requestPermission

TypeError: Object(...) is not a function at AndroidPermissions.requestPermission

我之前在Ionic项目里处理权限申请时也碰到过一模一样的错误,大概率是依赖版本不兼容或者配置环节出了问题,给你几个实用的排查和解决方向:

1. 确保@ionic-native/android-permissions与cordova插件版本匹配

@ionic-native的封装包必须和对应的cordova插件版本严格兼容,版本不匹配是触发这个错误的常见原因。你可以按以下步骤重新安装匹配的版本:

# 先卸载现有插件和依赖包
ionic cordova plugin remove cordova-plugin-android-permissions
npm uninstall @ionic-native/android-permissions

# 安装适配版本(Ionic 4/5用@5.x版本,Ionic 3用@4.x)
npm install @ionic-native/android-permissions@5.x
ionic cordova plugin add cordova-plugin-android-permissions

2. 确认AppModule中已正确注册AndroidPermissions

如果没有在NgModule的providers数组里注册这个服务,依赖注入会出问题,导致调用方法时报错。打开app.module.ts检查:

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

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
  providers: [
    StatusBar,
    SplashScreen,
    AndroidPermissions, // 确保这一行存在
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

3. 尝试直接使用权限字符串常量替代枚举

有时候PERMISSION枚举的引用会因为版本问题失效,你可以直接用原生权限字符串来调用:

this.platform.ready().then(() => {
  this.androidPermissions.requestPermission('android.permission.READ_EXTERNAL_STORAGE')
    .then((data: any) => {
      if (data.hasPermission) {
        console.log("have permission");
      }
    })
    .catch(err => console.error('权限申请失败:', err)); // 加上catch块方便排查
})

4. 清理项目缓存并重新构建

缓存问题偶尔也会导致这类奇怪的运行时错误,执行以下命令清理后重新编译:

ionic cordova clean android
npm run build
ionic cordova run android

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:52:39