android - 从蓝牙管理器获得适配器后的许可
问题描述
我有一个应用程序,其中某些(但不是全部)功能需要蓝牙连接。涉及蓝牙通信的一切都完美无缺。
但是,当启动应用程序时,如果手机上禁用了蓝牙,用户必须授予启用蓝牙的权限——这很好。但是,如果我按“否”,该应用程序将停止而没有任何进一步的评论。我发现调用 .getAdapter() 方法时会调用权限对话框:
final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
我想给用户按“否”的可能性,然后让应用程序继续,只是没有蓝牙功能。但是由于这不是我以编程方式询问的权限,所以我不知道在哪里拦截权限 anwser。有任何想法吗?我看了这里但没有找到答案:https://developer.android.com/reference/android/bluetooth/BluetoothManager#getAdapter()
解决方案
你将不得不打电话
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();
}
}
推荐阅读
- angular - RXJS catchError 不捕获网络故障错误
- python - Tensorflow 2残差块,加法
- python - pyspark:如何简化两个 .over 操作?
- regex - vim 全局命令匹配多行并合并它们
- python - 在 Django RestAPI 中存储变量
- python - RuntimeError:reset 参数为 False 但没有 n_features_in_ 属性。这个估计器安装了吗?
- swiftui - WidgetKit 扩展中的顶部对齐标签
- google-apps-script - 将工作表数据导出到 JSON 文件
- javascript - 未捕获的 ReferenceError:用户未在 HTMLButtonElement 中定义。
如何解决这个问题? - java - 将字符串数组与数组列表进行比较