BluetoothLeAdvertiser advertiser = BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser();
返回null。我已尝试使用API 21和API 23设备,但结果相同。我不知道我错过了什么?
应用程序构建并运行得很好,直到使用广告客户并且应用程序崩溃。
感谢您提供的任何帮助! :)
答案 0 :(得分:7)
如果您查看开发者文档,请链接here。 您将在以下情况中看到返回null对象:
返回Bluetooth LE广告操作的BluetoothLeAdvertiser对象。如果蓝牙关闭或此设备不支持蓝牙LE广告,则返回null。
如果您不确定设备是否支持蓝牙,则应检查系统返回的BluetoothAdapter
是否为null
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
// Device does not support Bluetooth
}
然后,他们建议您致电isMultipleAdvertisementSupported()
,看看是否首先支持。
if(!mBluetoothAdapter.isMultipleAdvertisementSupported()){
//Device does not support Bluetooth LE
}
如果它支持BLE,您必须检查是否启用了蓝牙,如果没有,请让用户知道并解决它。
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
这应该涵盖适配器null
答案 1 :(得分:0)
开始扫描前检查|