我正在编写android程序来扫描BLE设备。如果扫描设备的名称为" Pvz2 ",那么我想调用一个函数。
当我尝试将最近扫描的设备名称与先前定义的字符串进行比较时,一切都会正常运行但应用程序崩溃。可能是什么问题?
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:
答案 0 :(得分:0)
您正在获取NPE获取设备名称。
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
您必须始终假设您可以获得空名称。