从蓝牙管理器获取适配器后的权限

时间:2018-05-09 12:14:59

标签: android bluetooth-lowenergy android-permissions android-bluetooth

我有一个应用程序,其中一些 - 但不是全部 - 功能需要蓝牙连接。涉及蓝牙通信的一切都很完美。

然而,当启动应用程序并且手机上禁用蓝牙时,用户必须允许启用蓝牙 - 这很棒。但是,如果我按“否”,该应用程序将停止,无需进一步评论。我发现在调用.getAdapter()方法时会调用权限对话框:

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

我想让用户可以按“否”然后让应用程序继续,只是没有蓝牙功能。但由于这不是我以编程方式提出的许可,因此我不知道在哪里拦截权限anwser。有任何想法吗?我看了这里,但没有找到答案:https://developer.android.com/reference/android/bluetooth/BluetoothManager#getAdapter()

1 个答案:

答案 0 :(得分:3)

您必须致电

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();
           }
   }