Похоже, проблема в строке 59: if (!mBluetoothAdapter.isEnabled()) {
Примечание. В сообщении об ошибке указана строка 57, а в моем текстовом редакторе - 59.
Несколько строк выше, вы проверяете, был ли объект mBluetoothAdapter
успешно создан, проверяя, является ли он == null
. Но после этого вы вызываете его метод: .isEnabled()
. Я думаю, проблема в том, что mBluetoothAdapter
становится null
и, следовательно, выдает исключение NullPointerException при попытке доступа к одному из его методов.
Если я правильно понимаю, я думаю, что решение будет примерно таким:
// check if bluetooth is available
if(mBluetoothAdapter == null){
mBluetoothStatus.setText("Bluetooth is not available");
}
else {
mBluetoothStatus.setText("Bluetooth is available");
//if Bluetooth isnt enabled, enable it
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
}
Это позволит сохранить код активации от mBluetoothAdapter
со значением null
.
В качестве альтернативы, вы можете использовать return
для выхода из метода, если BlueTooth недоступен.
// check if bluetooth is available
if(mBluetoothAdapter == null){
mBluetoothStatus.setText("Bluetooth is not available");
return;
}
else {
mBluetoothStatus.setText("Bluetooth is available");
}
//if Bluetooth isnt enabled, enable it
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
Это сделало бы то же самое немного чище.
Я думаю, что следующий шаг для вас - выяснить, почему BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
возвращает null
вместо нужного вам объекта. Я не думаю, что ответ на этот вопрос в вашем MainActivity
методе. Устройство не находит адаптер по умолчанию, и это может быть результатом многочисленных проблем.