diff --git a/android/src/main/java/com/pauldemarco/flutter_blue/ProtoMaker.java b/android/src/main/java/com/pauldemarco/flutter_blue/ProtoMaker.java index 31e758a8..bc5c48e1 100644 --- a/android/src/main/java/com/pauldemarco/flutter_blue/ProtoMaker.java +++ b/android/src/main/java/com/pauldemarco/flutter_blue/ProtoMaker.java @@ -68,17 +68,21 @@ static Protos.ScanResult from(BluetoothDevice device, ScanResult scanResult) { } // Manufacturer Specific Data SparseArray msd = scanRecord.getManufacturerSpecificData(); - for (int i = 0; i < msd.size(); i++) { - int key = msd.keyAt(i); - byte[] value = msd.valueAt(i); - a.putManufacturerData(key, ByteString.copyFrom(value)); + if (null != msd) { + for (int i = 0; i < msd.size(); i++) { + int key = msd.keyAt(i); + byte[] value = msd.valueAt(i); + a.putManufacturerData(key, ByteString.copyFrom(value)); + } } // Service Data Map serviceData = scanRecord.getServiceData(); - for (Map.Entry entry : serviceData.entrySet()) { - ParcelUuid key = entry.getKey(); - byte[] value = entry.getValue(); - a.putServiceData(key.getUuid().toString(), ByteString.copyFrom(value)); + if (null != serviceData) { + for (Map.Entry entry : serviceData.entrySet()) { + ParcelUuid key = entry.getKey(); + byte[] value = entry.getValue(); + a.putServiceData(key.getUuid().toString(), ByteString.copyFrom(value)); + } } // Service UUIDs List serviceUuids = scanRecord.getServiceUuids(); @@ -205,4 +209,4 @@ static Protos.DeviceStateResponse from(BluetoothDevice device, int state) { p.setRemoteId(device.getAddress()); return p.build(); } -} \ No newline at end of file +}