《Android学习笔记》Android12蓝牙扫描不到设备的权限问题

这篇具有很好参考价值的文章主要介绍了《Android学习笔记》Android12蓝牙扫描不到设备的权限问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android12 关于蓝牙这部分新增了BLUETOOTH_SCANBLUETOOTH_ADVERTISEBLUETOOTH_CONNECT 权限,这些权限都属于敏感权限,都需要在代码中动态申请。移除了Android11 及以下版本中必须申请的位置权限[FINE_LOCATION] 和 [COARES_LOCATION]。

权限的申请

1、在Manifest.xml清单文件中添加对应的权限。

	<uses-permission android:name="android.permission.BLUETOOTH"
					android:maxSdkVersion="30" />
	<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
					android:maxSdkVersion="30" />

	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

	<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
	<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
	<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

其中 Android12 也提供了自主选择是否需要推导位置的操作,就是在 BLUETOOTH_SCAN 权限后加上android:usesPermissionFlags="neverForLocation"属性表示不推导位置权限。

2、在java代码中动态申请权限

private List<String> mPermissionList = new ArrayList<>();

// 动态申请权限
private void initPermission(){
	if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
		// Android 版本大于等于 Android12 时
		// 只包括蓝牙这部分的权限,其余的需要什么权限自己添加
		mPermissionList.add(Manifest.permission.BLUETOOTH_SCAN);
		mPermissionList.add(Manifest.permission.BLUETOOTH_ADVERTISE);
		mPermissionList.add(Manifest.permission.BLUETOOTH_CONNECT);
	} else {
		// Android 版本小于 Android12 及以下版本
		mPermissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
		mPermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
	}

	if(mPermissionList.size > 0){
		ActivityCompat.requestPermissions(this,mPermissionList.toArray(new String[0]),1001);
	}
}


@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
									   int[] grantResults){
	super.onRequestPermissionsResult(requestCode, permissions, grantResults);
	// 有权限没有通过
	boolean hasPermissionDismiss = false;
	if(1001 == requestCode){
		for(int i = 0; i < grantResults.length; i++){
			if(grantResults[i] == -1){
				hasPermissionDismiss = true;
				break;
			}
		}
	}
	if(hasPermissionDismiss){
		// 有权限未通过的处理
		...
	} else {
		//权限全部通过的处理
		...
	}
}

这样就能解决在 Android12 及以上版本搜索不到设备的情况。
如果还是有不懂的地方可以参考官方文档文章来源地址https://www.toymoban.com/news/detail-617234.html

到了这里,关于《Android学习笔记》Android12蓝牙扫描不到设备的权限问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 中柏 EZpad 8 Windows 平板电脑 |驱动备份|系统优化|不能调节显示器亮度|进入Bios/uefi 快捷键 |蓝牙扫描不到设备|CPU占用过高解决方案

              之前一直使用的这个平板,但是有个很严重的问题就是性能实在太差了,每次都是CPU百分百,Mem 百分之50% 这个结果真的很意外, 但是又无可奈何,后面花时间做了一些优化包括 进程限制  启动优化  内存页面优化  但结果都不尽人意,一启动程序就卡顿 ..........  中间又

    2024年02月09日
    浏览(118)
  • 【Bose30又连不上电脑蓝牙/电脑搜索不到蓝牙设备】

     关于笔记本搜索不到蓝牙设备可以参考知乎网友: 笔记本蓝牙无法搜索到设备(玄学办法同样适用于解决Wifi问题) - 知乎 (zhihu.com) 最近Bose30又连不上电脑,网络上找各种方法,最常用的方法就是:         在使用 Win10 连接耳机时,需要先连接手机,打开 Bose Connect (手机

    2024年02月06日
    浏览(46)
  • Mysql学习笔记(更新至4.12 权限管理和备份)

    数据库xxx语言 CRUD 增删改查 DDL 定义 DML 操作 DQL 查询 DCL 控制 操作数据库操作数据库中的表操作数据库中表的数据 mysql不区分大小写 !! 创建数据库 删除数据库 使用数据库 查询数据库 数字 unsigned: 无符号的整数 声明了该列不能填充负数 zerofill: 0填充的 不足位数

    2023年04月12日
    浏览(31)
  • Android Ble蓝牙App(一)扫描

      关于低功耗的蓝牙介绍我已经做过很多了,只不过很多人不是奔着学习的目的去的,拿着源码就去运行,后面又发现连接设备后马上断开,然后不会自己看问题,这个现象就是快餐式的,你不了解里面的知识内容,自然就不知道是怎么回事,重复的问题我回答了好多次了

    2024年02月08日
    浏览(39)
  • Android Ble蓝牙App(七)扫描过滤

      在上一篇文章中了解了MTU的相关知识以及对于设备操作信息的展示,本篇文章中将增加扫描设备的过滤功能让你更方便的扫描想要找的低功耗蓝牙设备。 Ble蓝牙App(一)扫描 Ble蓝牙App(二)连接与发现服务 Ble蓝牙App(三)特性和属性 Ble蓝牙App(四)UI优化和描述符 Bl

    2024年02月09日
    浏览(43)
  • 保姆级微信小程序对接蓝牙设备教程。微信小程序发送不同蓝牙指令(定时发送,断开重连,判断是否有蓝牙权限等)

    本文是一个完整的对接设备,发送不同指令监听不同返回的完整示例,可根据实际项目按需更改。 注: app.showModal 为在app.js中封装的showModal方法, then(()={}) 代表用户点击 confirm ,可用 wx.showModal 代替。 公用方法 请求设备列表 1. 判断是否有蓝牙权限 2. 初始化蓝牙 wx.openBluet

    2024年03月20日
    浏览(61)
  • Android连接蓝牙设备问题(android.permission.BLUETOOTH)

            近期遇到一个问题,之前发布的APP连接蓝牙都是正常的,现在有人反映连不上了。经过测试发现:android 12 和 harmonyOS 3.0.0 都会有这个问题,而之前的版本就不会有这个。         经过网上一番查找,原来是因为最近Google发布的Android 12,新引入了 BLUETOOTH_SCAN、

    2024年01月16日
    浏览(42)
  • 未知USB设备(设备描述符请求失败)伴随笔记本蓝牙消失

    本人使用的笔记本电脑已经两次遇到这种情况了,第一次遇到的时候是因为发现电脑开机之后蓝牙消失了。第二次也是一样的结果,当然第二次有经验了,很快就解决了。 首先呢,蓝牙消失的同时,设备管理器中会出黄色感叹号未知USB设备并且看不到蓝牙设备,如果跟我的情

    2024年02月09日
    浏览(52)
  • Android Ble蓝牙App(六)请求MTU与显示设备信息

      在上一篇文章中已经了解了数据操作的方式,而数据交互的字节长度取决于我们手机与蓝牙设备的最大支持长度。 Ble蓝牙App(一)扫描 Ble蓝牙App(二)连接与发现服务 Ble蓝牙App(三)特性和属性 Ble蓝牙App(四)UI优化和描述符 Ble蓝牙App(五)数据操作 Ble蓝牙App(六)

    2024年02月04日
    浏览(42)
  • 关于Android Studio 找不到设备的情况

    本人小白 学习阶段碰到这个问题 想着可能有人跟我有一样的问题 所以记录一下 有用的话可以点赞收藏 1、确保Android Studio下载了Google USB Driver (Android Studio右上角图标可以点进去,也可以从Setting进去)  2、电脑打开“设备管理器” 如图 找到你的设备 3、点击自己的设备右键

    2024年02月06日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包