网上搜了很多,在8.0以下能用,但是在8.0以上就不行了,请问有没有大佬懂呢!
解决方案 »
- 用scrollview做瀑布流,如何实现点击后,利用galary进行浏览
- 如何把虚拟机sdcard里文件复制到电脑D盘test文件夹里
- 求一个零散文件的打包成一个文件的办法
- 为什么Android手机异地GPRS无法使用?该如何调试?
- Intent对象问题
- android手机适应不同屏幕是不是只需要考虑DPI?
- 求助:在android布局是全屏的情况下, 如何监听软键盘的弹出和隐藏,有好的方法直接给100分!!!
- 只需要借你十秒钟,来审阅一下我的代码哪里有问题
- 新手写一个闹钟app遇到了问题。。求大神!!
- android微信分享,部分手机无效
- frameLayout构造问题
- MPChart点击图例隐藏事件
private String getBluetoothMacAddress() {
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String bluetoothMacAddress = "";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
try {
Field mServiceField = bluetoothAdapter.getClass().getDeclaredField("mService");
mServiceField.setAccessible(true); Object btManagerService = mServiceField.get(bluetoothAdapter); if (btManagerService != null) {
bluetoothMacAddress = (String) btManagerService.getClass().getMethod("getAddress").invoke(btManagerService);
}
} catch (NoSuchFieldException e) { } catch (NoSuchMethodException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { }
} else {
bluetoothMacAddress = bluetoothAdapter.getAddress();
}
return bluetoothMacAddress;
}
抛InvocationTargetException这个异常。应该不是反射的事情。
1. 在 Android8.1 Settings ---> System --> About --> Status --> Bluetooth address 中有显示的,不知道你的版本有没有。
2. 仔细看了一下代码是这样的
private void setBtStatus() {
BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
if (bluetooth != null && mBtAddress != null) {
String address = bluetooth.isEnabled() ? bluetooth.getAddress() : null;
if (!TextUtils.isEmpty(address)) {
// Convert the address to lowercase for consistency with the wifi MAC address.
mBtAddress.setSummary(address.toLowerCase());
Log.e("AHU.MAIN_ACTIVITY","address = " + address.toLowerCase());
} else {
mBtAddress.setSummary(mUnavailable);
}
}
}代码在 \vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\deviceinfo\Status.java你把用这段代码的程序放在system/priv-app/下面是可以获取的,而且获取的跟系统的一样。注意了是/system/pri-app,不是system/app3. 可以用 Settings.Secure.getString(context.getContentResolver(), "bluetooth_address");获取,不过要改一下源码了。
加一下这个 MOVED_TO_GLOBAL.add(Settings.Global.BLUETOOTH_ADDRESS); 也可以的。你可以尝试一下。