vue.js 未捕获(在承诺中)错误:Android上未实现“Device”插件

5kgi1eie  于 2022-11-25  发布在  Vue.js
关注(0)|答案(3)|浏览(256)

我正在使用来自Capacitor(https://capacitorjs.com/docs/apis/device#deviceinfo)的设备API以及离子框架和VueJS。目标是从Android设备检索UUID。
当在浏览器中打开应用程序时,我可以看到我正在记录的设备信息。但是,当在Android设备/ Android Studio上打开它时,我得到这个错误:

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

据我所知,插件是支持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");
},
h5qlskok

h5qlskok1#

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

public class MainActivity extends BridgeActivity {

 }
avwztpqn

avwztpqn2#

有趣的是,在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');
  }
xpcnnkqh

xpcnnkqh3#

对于电容器4,需要在调用 * super.onCreate之前调用registerPlugin *。
公共类MainActivity扩展了BridgeActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
  registerPlugin(MyPlugin.class);
  super.onCreate(savedInstanceState);
}

而不是:

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  registerPlugin(MyPlugin.class);
}

相关问题