我目前正在开发一个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
,我无法弄清楚为什么会发生这种情况
提前致谢
答案 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