当前位置: 首页 > news >正文

安卓开发问题:安卓Ble出现动态鉴权失败以及扫描设备一直进入不了的问题

问题1描述

1、安卓12需要动态鉴权

// 鉴权函数           
requestPermissions(permissionsList.toArray(strings), MyConstants.REQUEST_CODE_PERMISSIONS);

但是在鉴权回调函数中如Manifest.permission.BLUETOOTH_SCANManifest.permission.BLUETOOTH_CONNECT一直显示失败,即如下鉴权回调中,grantResults返回的值是-1

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) 

问题1原因分析

因为Manifest.permission.BLUETOOTH_SCANManifest.permission.BLUETOOTH_CONNECT是在安卓12版本的系统上才有的,而以下版本是没有的,如果在安卓12版本以下去动态鉴权这些权限,那肯定是会失败

问题1部分解决方案

参看其他博客解决方案就是分开鉴权。但是存在搜索设备失败问题,即问题2

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
//这里是安卓12的权限permissions.add(Manifest.permission.BLUETOOTH_SCAN);permissions.add(Manifest.permission.BLUETOOTH_ADVERTISE);permissions.add(Manifest.permission.BLUETOOTH_CONNECT);}else{//这是其他的permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);}

问题2解决

对于安卓12也需要添加定位相关权限,而其他不需要添加安卓12要求的权限

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
//这里是安卓12的权限permissions.add(Manifest.permission.BLUETOOTH_SCAN);permissions.add(Manifest.permission.BLUETOOTH_ADVERTISE);permissions.add(Manifest.permission.BLUETOOTH_CONNECT);}permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
http://www.lryc.cn/news/344999.html

相关文章:

  • DSP ARM FPGA 实验箱_音频处理_滤波操作教程:3-9 音频信号的滤波实验
  • Rust多线程交叉打印+Send Sync特征讲解
  • C#爬虫爬取某东商品信息
  • 【Stylus详解与引入】
  • 001 登录(md5加密)
  • Linux学习笔记5---WSL2编译裸机程序并烧录至SD卡
  • React 第二十九章 React 和 Vue 描述页面的区别
  • Dnspy附加进程调试---代码被优化及无法获取局部变量
  • Redis---------实现更改数据业务,包括缓存更新,缓存穿透雪崩击穿的处理
  • 蓝牙小车的具体实现
  • 污染修复乙级设计资质中关于设计成果保护的规定
  • ##10 卷积神经网络(CNN):深度学习的视觉之眼
  • Linux下添加自己的服务脚本(service)
  • C++:内存管理
  • Veeam - 数据保护和管理解决方案_Windows平台部署备份还原VMware手册
  • 易基因:Nature子刊:ChIP-seq等揭示c-di-AMP与DasR互作以调控细菌生长、发育和抗生素合成|项目文章
  • stm32学习探究:利用TB6612驱动直流电机
  • SpringBatch快速入门
  • 下载Node.js及其他环境推荐nvm
  • STM32 ADC学习
  • 详解AI作画算法原理
  • 每日Attention学习3——Cross-level Feature Fusion
  • 华为eNSP学习—IP编址
  • 数据库的要求
  • Spring MVC(二)
  • ECP44304T-76是一款增强型通信处理器吗?
  • mongoDB分组查询
  • 【Java 刷题记录】位运算
  • WINDOWS下zookeeper突然无法启动但是端口未占用的解决办法(用了WSL)
  • 【LLM第三篇】名词解释:RLHF——chatgpt的功臣