gpt4 book ai didi

android - 如何以编程方式清除 Android 中的蓝牙名称缓存?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:55 25 4
gpt4 key购买 nike

我注意到,当配对的蓝牙设备发生名称更改时,我的 Android 设备并不总是注册该名称更改。它继续显示设备的旧名称......这对于未配对的设备来说不是问题,所以我自然猜测Android会在某处缓存配对设备的名称。

环顾四周,我发现如果我取消配对设备并手动清除存储在我的 Android 的“蓝牙共享”应用程序中的缓存,这个问题就会消失。当然,在我再次将设备与我的 Android 设备配对后,问题可能会再次出现。

TL;DR 如何强制 Android 始终显示蓝牙设备的最新名称?

听说过“fetchUuidsWithSdp”方法,但不知道怎么用。

最佳答案

是的,fetchUuidsWithSdp() 是个好主意,因为与 getUuids() 不同,它会强制设备尝试连接到目标设备并更新其相关信息。

fetchUuidsWithSdp 的官方支持刚刚在 4.0.3 中添加,但在此之前使用反射就可以使用。

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." );
}
}
}
}

然后通常会注册 android.bluetooth.device.action.UUID,但您可能想要注册名称更改操作。

请注意,如果您决定注册 UUID 操作,在 API 15 之前它会被拼写为“android.bleutooth.device.action.UUID”(蓝牙中的 e 和 u 已交换)。

关于android - 如何以编程方式清除 Android 中的蓝牙名称缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10793761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com