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

时间:2018-02-14 11:24:56

标签: android bluetooth ionic3 android-permissions mac-address

我目前正在开发一个Ionic 3应用程序,我需要在Android设备上获取手机的蓝牙MAC地址(或识别蓝牙网络内设备的东西),我一直在尝试获取MAC地址(或UUID等)使用Ionic的Uid原生插件,以及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;
  }

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

我的问题

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

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

1 个答案:

答案 0 :(得分:3)

解决方案:

使用电话设置

编写cordova插件以获取MAC地址
String mac = android.provider.Settings.Secure.getString(context.getContentResolver(), "bluetooth_address")

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

快速做法:改变https://ionicframework.com/docs/native/device/ Ionic Native Plugin。

仅供参考我们与我的一位朋友所做的改变Device.java要点:https://gist.github.com/giannisdaras/04126edcae32d597cf54e7b2cae680ac