在Ionic 3上检索蓝牙MAC地址将返回null

bol*_*ano 9 android mac-address bluetooth android-permissions ionic3

我目前正在开发一个Ionic 3应用程序,我需要在Android设备上获取手机的蓝牙MAC地址(或能识别蓝牙网络内设备的东西),我一直在尝试获取MAC地址(或UUID等). )使用UidIonic 的本机插件,以及本机插件AndroidPermissions.我目前正在使用插件主页上建议的方法https://ionicframework.com/docs/native/uid/

这是获取设备MAC地址的代码:

async getMAC() {
   const { hasPermission } = await this.androidPermissions.checkPermission(
     this.androidPermissions.PERMISSION.READ_PHONE_STATE
   );

   if (!hasPermission) {
     const result = await this.androidPermissions.requestPermission(
       this.androidPermissions.PERMISSION.READ_PHONE_STATE
     );

     if (!result.hasPermission) {
       throw new Error('Permissions required');
     }

     return;
   }

    return this.uidNative.MAC;
  }
Run Code Online (Sandbox Code Playgroud)

我还READ_PHONE_STATE向我添加了权限,AndroidManifest.xml并为Ionic设置了相应的提供程序.我的手机正常请求许可.

我的问题

在请求许可后,上述Promise成功解决,但它返回null,我无法弄清楚为什么会发生这种情况

  1. 这有什么解决方法吗?有没有人有类似的问题?
  2. 有没有另一种方法来获取Android设备的MAC地址并将其传递给Ionic应用程序?

提前致谢

bol*_*ano 3

解决方案:

编写一个 cordova 插件以使用电话设置获取 MAC 地址

String mac = android.provider.Settings.Secure.getString(context.getContentResolver(), "bluetooth_address")
Run Code Online (Sandbox Code Playgroud)

然后通过 Ionic 3 调用此调用。

快速方法:更改https://ionicframework.com/docs/native/device/ Ionic Native 插件。

仅供参考,看看Device.java我们和我的一个朋友一起做的这个改变的要点:https ://gist.github.com/giannisdaras/04126edcae32d597cf54e7b2cae680ac