当前位置:首页 > 技术心得 > 正文内容

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

xjtudll9年前 (2017-11-04)技术心得18660

http://stackoverflow.com/questions/10793761/how-to-programmatically-clear-the-bluetooth-name-cache-in-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." );             }                        }     } } 


扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/477/

标签: Android蓝牙
分享给朋友:

“如何通过程序清除蓝牙缓存的设备名称?” 的相关文章

ListView.setOnItemClickListener 点击无效

如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效, 事件会被子View捕获到,ListView无法捕获处理该事件. 解决方法: 在checkbox、button对应的view处加...

如何获取.NET Framework目录路径?

问题: 如何在C#应用程序中获取.NET Framework目录路径? 例如:“C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727” 方法: 通过使用以下方法可以获取当前.NET应用程序活动的CLR安装目录的路径: Sys...

工作台待处理业务、待处理流程、待审批、我的跟进、预警、消息对应的数据表

https://vip.kingdee.com/questions/152510144306059546/answers/152510187037628697 工作台待处理业务、待处理流程、待审批、我的跟进、预警、消息对应的数据表如下: 待处理业务:t_SuspendWorkPushMain、t_S...

金蝶 KFO.Dictionary 怎么写

.Net 调用,以C#为例,调用如下: 1、添加kfo.dll的引用。 2、调用方法 KFO.Dictionary dct=new KFO.Dictionary(); dct.let_value("FInteID",100);...

因为数据库正在使用,所以无法获得对数据库的独占访问权

还原或删除sql server 2008数据库时,经常烩出现: “因为数据库正在使用,所以无法获得对数据库的独占访问权”,终解决方案如下 关键SQL语句: use master ALTER DATABASE [datebase] SET OFFLINE WITH ROLLB...

OKI编译器 Fatal ERR F025 解决

OKI编译器 Fatal ERR F025 解决

工程添加好C文件和H文件后,编译,提示如下错误: Fatal error F025:NO ROM window specification 原因: 编译器缺乏.ASM 启动文件,需要手动添加,文件在安装目录里: \Startup\Src\ 根据需求拷贝相应的ASM文件。例如,ML610Q475则拷...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。