你有什么问题?我的猜测是您需要将 BLUETOOTH 和 BLUETOOTH_ADMIN 权限添加到您的应用程序中。
请注意,首选的解决方案是使用意图来提示用户是否要启用蓝牙:
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableIntent);
另请注意,调用enable
是异步的,它会立即返回并在后台启用蓝牙。因此,蓝牙实际上可能尚未启用,它可能仍在准备中。另请参阅有关蓝牙的 Android 指南
编辑添加禁用/等待/启用/等待示例代码
这是请求蓝牙关闭,然后等待它打开的示例代码。它必须在单独的线程中运行,而不是在 UI 线程中。可以将其封装在一个Runnable
Class 中,volatile
如果它成功完成,则将(最好)标志设置为 true。
注意: 已知此示例代码在一些不允许从用户应用程序调用 diable/enable 的旧设备上存在问题。
BluetoothAdapter.getDefaultAdapter().disable();
while (BluetoothAdapter.getDefaultAdapter().isEnabled())
{
try
{
Thread.sleep(100L);
}
catch (InterruptedException ie)
{
// unexpected interruption while disabling Bluetooth
Thread.currentThread().interrupt(); // restore interrupted flag
return;
}
}
// disabled, re-enabling Bluetooth
BluetoothAdapter.getDefaultAdapter().enable();
while (!BluetoothAdapter.getDefaultAdapter().isEnabled())
{
try
{
Thread.sleep(100L);
}
catch (InterruptedException ie)
{
// unexpected interruption while enabling bluetooth
Thread.currentThread().interrupt(); // restore interrupted flag
return;
}
}