清除android中的蓝牙名称缓存

Posted

技术标签:

【中文标题】清除android中的蓝牙名称缓存【英文标题】:Clear the bluetooth name cache in android 【发布时间】:2014-03-27 10:48:16 【问题描述】:

我想清除蓝牙缓存。 我正在做关于蓝牙的应用程序。

我刚刚知道 android 蓝牙设备名称缓存在手机中。 (当手机找到蓝牙设备时)

我在任何地方都找不到解决方案。 我刚刚看到 fetchUuidsWithSdp()。 有人说它会清除安卓手机的蓝牙缓存。

但我不知道如何使用这个方法,我认为 fetchUuidsWithSdp() 不会清除缓存。

请告诉我如何清除 Android 中的蓝牙缓存或如何使用 fetchUuidsWithSdp()。

谢谢:)

【问题讨论】:

【参考方案1】:

    按照Android Guide 的说明开始发现。

    在声明 IntentFilter 时,添加(至少) ACTION_FOUND 和 ACTION_UUID :

    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    filter.addAction(BluetoothDevice.ACTION_UUID);
    

    在您的接收器内部调用 fetchUuidsWithSdp()。 您将获得 ACTION_UUID 中的 UUID:

    public void onReceive(Context context, Intent intent) 
                    String action = intent.getAction();
    
     if (BluetoothDevice.ACTION_FOUND.equals(action)) 
                    // Get the BluetoothDevice object from the Intent
                    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    
                    // get fresh uuids
                    device.fetchUuidsWithSdp();
    
                 
                else if (BluetoothDevice.ACTION_UUID.equals(action)) 
                    // Get the device and teh uuids
                    BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    Parcelable[] uuidExtra = intent.getParcelableArrayExtra(BluetoothDevice.EXTRA_UUID);
    
                    if(uuidExtra !=null)
    
                        for (Parcelable uuid : uuidExtra) 
                            Log.d("YOUR_TAG", "Device: " +  device.getName() + " ( "+ device.getAddress() +" ) - Service: " + uuid.toString());
                        
    
                
     
    

【讨论】:

我对这种方法没有任何运气。我的设备运行的是 5.0.2 和 4.4.2,调用 fetchUuidsWithSdp 不会清除已配对设备的缓存。

以上是关于清除android中的蓝牙名称缓存的主要内容,如果未能解决你的问题,请参考以下文章

缓存的 Android 蓝牙设备

是否可以清除 iOS 和 Android webkit 中的缓存?

android 清除缓存功能如何实现

关于蓝牙开发之数据缓存问题(脏数据)

在我清除缓存之前,android 应用程序不会更新

Android BLE 广播定制