E / BluetoothAdapter:蓝牙活页夹为空

时间:2019-01-31 10:54:01

标签: java android bluetooth

你好,我在OnePlus6上遇到问题,该设备被检测为没有蓝牙

这是激活蓝牙的方法:

protected void onResume(){
    super.onResume();
    boolean fAdapterEnabled = BluetoothAdapter.getDefaultAdapter().isEnabled();
    try {
        if (!fAdapterEnabled) {
            Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivity(intent);
        }
    }catch (Exception e){
        Log.d("bgx_dbg", "Exception caught while calling isEnabled.");
        Toast.makeText(this,"Exception caught", Toast.LENGTH_LONG).show();
    }
}

我想澄清一下这段代码可以与其他智能手机完美配合

这是我的错误:

  

2019-01-25 14:16:57.571 28761-28761 /? E / BluetoothAdapter:蓝牙   活页夹为空2019-01-25 14:16:57.590 28761-28761 /? E / AndroidRuntime:   致命异常:主要       流程:com.clj.blesample,PID:28761       java.lang.NullPointerException:尝试在null上调用虚拟方法'boolean android.bluetooth.BluetoothAdapter.isEnabled()'   对象引用

清单:

<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

1 个答案:

答案 0 :(得分:0)

从上面给出的代码来看,这似乎是蓝牙适配器的问题,如果您没有在下面显示的清单中给应用程序以正确的权限,或者蓝牙被损坏,则可能发生。我在下面添加了代码,您应该使用它来考虑出现故障的蓝牙,并创建一个实用程序类,您可以从中进行调用。

注意:它的蓝牙适配器null不是isEnabled

权限:

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

代码:

public static boolean isBluetoothEnabled() {
    final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    return (bluetoothAdapter != null && bluetoothAdapter.isEnabled());
}