android刷新蓝牙缓存,如何通过程序清除蓝牙缓存的设备名称?

现象:

一个已经配对过的蓝牙设备,修改名称之后,手机上显示的依旧是以前的名称,并没有更新成最新的名字。

如果取消配对,再重新配对,名称又能更新。

所以,很明显android缓存了设备名称。

问题:

如何强制让android显示蓝牙设备的最新名称

方法:

使用fetchUuidsWithSdp(),调用这个函数之后,会强制重连设备并更新设备信息。

该函数仅在android 4.0.3之后才有效,而且API并非公开的,需要通过反射的方式调用。

参考代码如下:

public static void startFetch( BluetoothDevice device ) { // Need to use reflection prior to API 15 Class cl = null; try { cl = Class.forName("android.bluetooth.BluetoothDevice"); } catch( ClassNotFoundException exc ) { Log.e(CTAG, "android.bluetooth.BluetoothDevice not found." ); } if (null != cl) { Class[] param = {}; Method method = null; try { method = cl.getMethod("fetchUuidsWithSdp", param); } catch( NoSuchMethodException exc ) { Log.e(CTAG, "fetchUuidsWithSdp not found." ); } if (null != method) { Object[] args = {}; try { method.invoke(device, args); } catch (Exception exc) { Log.e(CTAG, "Failed to invoke fetchUuidsWithSdp method." ); } } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值