未捕获(承诺)错误:“设备”插件未在 android 上实现

Posted

技术标签:

【中文标题】未捕获(承诺)错误:“设备”插件未在 android 上实现【英文标题】:Uncaught (in promise) Error: "Device" plugin is not implemented on android 【发布时间】:2021-08-19 10:41:43 【问题描述】:

我正在使用来自 Capacitor (https://capacitorjs.com/docs/apis/device#deviceinfo) 的设备 API 以及 Ionic Framework 和 VueJS。目标是从 android 设备检索 UUID。

在浏览器中打开应用程序时,我可以看到正在记录的设备信息。但是,在 Android 设备/Android Studio 上打开它时出现此错误:

据我所知,Android 支持该插件。我做错了什么?

代码:

import  Device  from "@capacitor/device";
async getDeviceInfo() 
  const info = await Device.getId();
  this.uuid = info.uuid;
  alert(this.uuid);
  const moreInfo = await Device.getInfo();
  const battery = await Device.getBatteryInfo();
  alert(JSON.stringify(moreInfo));
  alert(JSON.stringify(battery));
  alert("test");
,

【问题讨论】:

"import Device from "@capacitor/device"; 适用于电容器 3.0 和此 import Plugins from '@capacitor/core'; const Device = Plugins; 电容器 2.0 奇怪:我确实更新到电容器 3,但是第一行不起作用。我尝试了第二个,确实有效;).. 检查***.com/a/67671607/1351469 谢谢,这回答了我的问题 【参考方案1】:

同样的错误发生在我身上,我根据 Android 的电容器更新文档修复了它,从 MainActivity 类中删除了 onCreate 方法。

 public class MainActivity extends BridgeActivity 

 

【讨论】:

【参考方案2】:

有趣的是,在 Capacitor 3.x 中,他们已将 uuid 移动到它自己的函数中。

import  Device  from '@capacitor/device';

  async getdevinfo()
    console.log('trying to get device info');
// works in browser
      const info = await Device.getId();
      console.log(info);
      console.log(info.uuid);

//wont work in browser
      const moreInfo = await Device.getInfo();
      const battery = await Device.getBatteryInfo();
      console.log(JSON.stringify(moreInfo));
      console.log(JSON.stringify(battery));

    console.log('post device info request');
  

【讨论】:

以上是关于未捕获(承诺)错误:“设备”插件未在 android 上实现的主要内容,如果未能解决你的问题,请参考以下文章

ERROR 错误:未捕获(承诺中):MyPlugin 没有 Web 实现

Vue.js:vuex 操作中未捕获的承诺

ionic2:浏览器中的地理定位失败并出现错误:异常:未捕获(承诺中):错误

未捕获(承诺):由 Zone.js 提供的cordova_not_available

错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'`

GraphQL + Apollo 错误:未捕获(承诺中)