2012-05-29 8 views
6

Ho notato che quando un dispositivo Bluetooth accoppiato ha un cambio di nome, il mio dispositivo Android non registra sempre quel cambio di nome. Continua a visualizzare il vecchio nome del dispositivo ... Questo non è un problema per i dispositivi non accoppiati, quindi la mia ipotesi è che Android memorizzi i nomi dei dispositivi associati da qualche parte.Come cancellare a livello di codice la cache del nome Bluetooth in Android?

Dopo essermi guardato intorno, ho scoperto che se annullo il dispositivo e svuoto manualmente la cache memorizzata nell'app "Condivisione Bluetooth" di Android, questo problema scompare. Ovviamente, il problema tornerà probabilmente dopo aver accoppiato nuovamente il dispositivo al mio Android.

TL; DR Come si impone a Android di mostrare sempre l'ultimo nome di un dispositivo Bluetooth?

ho sentito qualcosa sul metodo "fetchUuidsWithSdp", ma non sono sicuro come usarlo.

risposta

6

Sì, fetchUuidsWithSdp() è una buona idea perché, a differenza di getUuids(), forza il dispositivo a tentare di connettersi al dispositivo di destinazione e aggiornare le sue informazioni su di esso.

Il supporto ufficiale per fetchUuidsWithSdp è stato appena aggiunto in 4.0.3, ma era disponibile prima che si usasse il reflection.

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

uno normalmente quindi registrare per android.bluetooth.device.action.UUID, ma si potrebbe desiderare di registrare per il cambio di nome di azione, invece.

Si noti che, se si decide di registrarsi per l'azione UUID, è stato scritto erroneamente prima dell'API 15 come "android.bleutooth.device.action.UUID" (le e eu in bluetooth sono scambiate).

+0

Grazie mille – user1408996

+0

questo metodo sbloccato il mio bluetooth così ho potuto inviare i dati. in precedenza il dispositivo BT non rispondeva. dopo che questo codice è stato applicato, ho cancellato la relazione e quindi l'ho riavviata. Ho un adattatore per stampante bluetooth (cinese) e una stampante a punti Epson LX 300 + II. elenco delle fatture. così tanti GRAZIE !!! – mihai71

0

di ricordare l'ultima periferica che mi collego ho sempre salvare l'indirizzo MAC in un file

Problemi correlati