разрешение после получения адаптера от менеджера Bluetooth - PullRequest
0 голосов
/ 09 мая 2018

У меня есть приложение, в котором для некоторых (но не для всех) функций требуется подключение по Bluetooth. Все, что касается связи по Bluetooth, работает идеально.

Однако, при запуске приложения и если Bluetooth отключен на телефоне, пользователь должен дать разрешение на включение Bluetooth - это здорово. Но, если я нажимаю «нет», приложение останавливается без каких-либо дополнительных комментариев. Я обнаружил, что диалоговое окно разрешений вызывается при вызове метода .getAdapter ():

final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();

Я хочу дать пользователю возможность нажать «нет», а затем продолжить работу приложения, без функций Bluetooth. Но так как это не разрешение, я прошу программно, я не знаю, где перехватить разрешение и ответ. Есть идеи? Я посмотрел здесь, но не нашел ответа: https://developer.android.com/reference/android/bluetooth/BluetoothManager#getAdapter()

1 Ответ

0 голосов
/ 09 мая 2018

Вам нужно будет позвонить

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(!bluetoothAdapter.isEnabled()) {
     Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
     startActivityForResult(intent,1);
}
else {
     Toast.makeText(this,"Blurtooth Enabled",Toast.LENGTH_SHORT).show();
}

После этого появится диалоговое окно Blurtooth permission, и результат выбора может быть обработан в onActivityResult()

   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(resultCode == RESULT_OK)
            {
               Toast.makeText(this,"Enable Enabled",Toast.LENGTH_SHORT).show();
            }
           else
           {
               Toast.makeText(this,"Enable bluetooth first",Toast.LENGTH_SHORT).show();
           }
   }
...