Как объяснено в doc , вы должны проверить, включен ли Bluetooth, и если нет, попросить пользователя активировать его. это то, что делает ваш код.
То, что вам, кажется, не хватает, это проверить результат. Когда действие, которое вы открыли, чтобы попросить пользователя активировать Bluetooth, закончено, вы должны проверить, включил ли пользователь его или нет. если да, продолжайте, если нет, делайте, что хотите (например, закройте приложение или повторите запрос).
Для проверки используйте onActivityResult()
. Этот метод будет запущен после завершения действия по активации Bluetooth. Там проверьте, что вы вернулись из этого действия, а не из другого, используя код запроса (REQUEST_ENABLE_BT). Затем проверьте, включен ли Bluetooth, если да, сделайте свое дело, если не закройте приложение (например)
Так что у вас будет что-то вроде
void onCreate (Bundle savedInstanceState){
if (btAdapter != null && !btAdapter.isEnabled()) {
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
}
}
void onActivityResult (int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_ENABLE_BT) {
if (btAdapter != null && btAdapter.isEnabled()) {
startDoingThings();
} else {
finnish();
}
}
}
Наконец, другие вещи, которые вы делаете в onCreate () после проверки Bluetooth. Не делайте это в onCreate (), но в startDoingThings (). Делая это, вы будете ждать включения Bluetooth, прежде чем делать свои вещи.