2017-12-27 2 views
-4

Ich schreibe Android-Programm für BLE-Geräte zu scannen. Wenn das gescannte Gerät den Namen "Pvz2" hat, möchte ich eine Funktion aufrufen.Vergleichen BLE-Gerätename zu Zeichenfolge

Alles funktioniert gut, aber App stürzt ab, wenn ich versuche, den kürzlich gescannten Gerätenamen mit der zuvor definierten Zeichenfolge zu vergleichen. Was könnte das Problem sein?

final String vardas1="Pvz2"; 

private ScanCallback mScanCallback = new ScanCallback() { 
    @Override 
    public void onScanResult(int callBackType, ScanResult result) { 
     super.onScanResult(callBackType, result); 
     BluetoothDevice btDevice = result.getDevice(); 
     String name = btDevice.getName(); 
     if (result.getScanRecord() != null && Sc_on) { 
      if (name.equals(vardas1)) 
       // Here I would call the function but this point is never reached 
      } 
     }      
     ... 

Stacktrace des Absturzes:

Stacktrace

+1

Bitte fügen Sie stacktrace von Android Log. – Christopher

Antwort

0

Du eine NPE immer den Gerätenamen zu bekommen.

String name = btDevice.getName(); // <-- this returns null, since sometimes is not possible to determine the name 
if (result.getScanRecord() != null && Sc_on) { 
    if (name.equals(vardas1)) { // <-- null.equals crashes 

Sie müssen immer davon ausgehen, dass Sie einen Nullnamen erhalten können.

Verwandte Themen