首页 > 解决方案 > 从蓝牙管理器获得适配器后的许可

问题描述

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

但是,当启动应用程序时,如果手机上禁用了蓝牙,用户必须授予启用蓝牙的权限——这很好。但是,如果我按“否”,该应用程序将停止而没有任何进一步的评论。我发现调用 .getAdapter() 方法时会调用权限对话框:

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

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

标签: androidbluetooth-lowenergyandroid-permissionsandroid-bluetooth

解决方案


你将不得不打电话

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

推荐阅读