android6.0获取蓝牙mac地址

帮着修改公司以前的项目的时候,客户反馈android 6.0以上蓝牙兼容有问题,android 6.0是一个大的变化,所以以前的很多方法并不适用了,Android6.0以上为了给用户更多的数据保护,无法访问WiFi和蓝牙的mac地址。
对用户来说这是好事,但是对程序员就比较苦逼了,现在用蓝牙技术的也不多了,在百度上找了半天也没有获取蓝牙的新方法,全是以前的,所以说对程序员来说,还是尽量用google,最后在stackoverflow上找到了方法:

private static String getBtAddressViaReflection() {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    Object bluetoothManagerService = new Mirror().on(bluetoothAdapter).get().field("mService");
    if (bluetoothManagerService == null) {
        Log.w(TAG, "couldn't find bluetoothManagerService");
        return null;
    }
    Object address = new Mirror().on(bluetoothManagerService).invoke().method("getAddress").withoutArgs();
    if (address != null && address instanceof String) {
        Log.w(TAG, "using reflection to get the BT MAC address: " + address);
        return (String) address;
    } else {
        return null;
    }
}
记得要加上蓝牙权限:
<uses-permission android:name="android.permission.BLUETOOTH"/>

需要导入mirror包,下载地址很多,github上也可以下载,这里贴出一个网址:
http://mvnrepository.com/artifact/net.vidageek/mirror/1.6.1
用这个方法应该也可以获取到wifi的mac地址,我没有试过,有需要的朋友可以试试
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值