Получение MAC-адреса Bluetooth на Ionic 3 возвращает null

в настоящее время я разрабатываю приложение Ionic 3, где мне нужно получить MAC-адрес Bluetooth телефона (или что-то, что идентифицирует устройство внутри сети Bluetooth) на устройстве Android, и я пытаюсь получить MAC-адрес (или UUID и т. д.) с помощью Uid родной плагин для Ionic, вместе с родным плагином для 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. Обычно мой телефон запрашивает разрешение.

моя проблема

после запроса разрешения вышеуказанное обещание успешно разрешено, но оно возвращает null и я не могу выяснить, почему это происходит

  1. есть ли обходной путь для этого? У кого-нибудь были похожие проблемы?
  2. есть ли другой способ получить MAC-адрес устройства android и передать его в ионное приложение?

спасибо заранее

1 ответов


устранение:

напишите плагин cordova, чтобы получить MAC-адрес, используя настройки телефона

String mac = android.provider.Settings.Secure.getString(context.getContentResolver(), "bluetooth_address")

затем вызовите этот вызов через Ionic 3.

быстрый способ сделать: изменить https://ionicframework.com/docs/native/device/ Ионный Родной Плагин.

FYI взгляните на это измененное Device.java суть мы сделали с моим другом: https://gist.github.com/giannisdaras/04126edcae32d597cf54e7b2cae680ac