Android获取蓝牙地址


最近做一个项目,发现Android6.0以上的版本获取的蓝牙地址始终为02:00:00:00,
Google一下发现Android早就封掉了相关接口,于是想到反射的方式去获取Mac地址,在此记录一下

Android 6.0以下的版本

直接使用bluetoothadapter.getaddress()

Android 6.0以上

private String getBluetoothAddress(BluetoothAdapter adapter) {
        if (adapter == null) {
            return null;
        }

        Class<? extends BluetoothAdapter> btAdapterClass = adapter.getClass();
        try {
            Field mServiceField = adapter.getClass().getDeclaredField("mService");
            mServiceField.setAccessible(true);
            Object btManagerService = mServiceField.get(adapter);
            if (btManagerService != null) {
                 return (String) btManagerService.
                            getClass(.getMethod("getAddress").invoke(btManagerService);
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            LogWriter.writeLog(TAG, e.getMessage());
            return null;
        }
}

PS:有的手机需要在蓝牙已经打开的时候才能获取到


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM