蓝牙isEnabled()失败

时间:2012-06-15 15:41:03

标签: android bluetooth

我使用此代码启动蓝牙:

BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
if(btAdapter == null)
   returns; /no bluetooth
if(btAdapter.isEnabled() == false)
{  Toast("Bluetooth off. Starting it...");
   if(btAdapter.enable() == false)
      Toast("Error enabling bluetooth.");
}

应该很简单。只是获取和适配器,如果它没有启用,那么我启动它。

问题是,当蓝牙实际上为ON时,isEnabled()返回false(它应该返回true)并且调用enable()会返回false,因此它显示“启用蓝牙错误”。我想因为它已经开启了。之后我的蓝牙符号(在状态栏中)消失了。 任何提示?

当然我有权限。

3 个答案:

答案 0 :(得分:3)

确保您在清单文件中具有正确的权限

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

答案 1 :(得分:2)

未经用户确认,您无法启用蓝牙。你需要这样做,

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (mBluetoothAdapter != null) {
    // Device supports Bluetooth

    if (!mBluetoothAdapter.isEnabled()) {
        // Bluetooth isn't enabled, so enable it.
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    }
}

将出现一个对话框,要求用户启用蓝牙权限,如下所示。

enter image description here

如果用户回答“是”,系统将开始启用蓝牙,一旦过程完成(或失败),焦点将返回到您的应用程序。

答案 2 :(得分:1)

要以编程方式检查蓝牙状态:

  1. 添加以下权限: -

    android.permission.BLUETOOTH

  2. 使用以下功能启用BLUETOOTH: -

  3. BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    
    private void turnOn() {
    
       if (!mBluetoothAdapter.isEnabled()) {
            Intent enableBtIntent = new 
            Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivity(enableBtIntent);
        }
    
    }