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

Android 蓝牙学习

在Android中,进行蓝牙设备扫描startDiscovery需要申请位置权限,但有的时候并不需要申请位置权限,就有了android:usesPermissionFlags="neverForLocation",设置这个就不用申请位置权限来进行蓝牙扫描。

android:usesPermissionFlags="neverForLocation" 是 Android 中用于在应用的 AndroidManifest.xml 文件中声明权限使用标志的一个属性。具体来说,这个标志与蓝牙扫描相关联,旨在向用户和系统表明应用程序请求蓝牙权限的目的不是为了进行位置跟踪或获取用户的位置信息。

背景

自 Android 12(API 级别 31)起,Google 引入了更严格的隐私保护措施,其中包括对蓝牙扫描权限的管理。以前,应用程序可能只需要蓝牙权限就能访问蓝牙功能,但这些功能也可能被间接用于推断用户的位置,例如通过蓝牙信标进行室内定位。为增强用户隐私保护,Android 提供了一种机制让开发者明确声明他们的蓝牙扫描活动不会用于位置跟踪。

使用场景

当你开发的应用程序需要执行蓝牙扫描操作,但不打算用此操作来确定用户的位置时,可以使用 android:usesPermissionFlags="neverForLocation" 来声明这一点。这有助于增加用户的信任度,并可能简化权限请求流程,因为在这种情况下,应用不需要请求位置相关的权限。

如何使用

要在你的应用中声明蓝牙权限且不用于位置跟踪,可以在 AndroidManifest.xml 文件中的 <uses-permission> 标签内添加 android:usesPermissionFlags 属性。例如:

 

xml

深色版本

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.bluetoothapp"><uses-permission android:name="android.permission.BLUETOOTH_SCAN"android:usesPermissionFlags="neverForLocation"/><!-- 其他配置 -->
</manifest>

在这个例子中,BLUETOOTH_SCAN 权限被声明为“永不用于位置”,这意味着该应用承诺不会利用蓝牙扫描的结果来进行位置跟踪。

注意事项

  • 权限请求:即使指定了 neverForLocation 标志,如果您的应用还需要其他涉及位置数据的功能,则仍需请求相应的位置权限。
  • 用户体验:明确声明蓝牙权限不用于位置跟踪可以帮助提高用户的信任感,因为它清楚地传达了应用收集数据的目的。
  • 兼容性android:usesPermissionFlags="neverForLocation" 只适用于 Android 12 及以上版本。对于较低版本的 Android 系统,您需要确保应用的行为符合当时的权限模型要求。

总结

android:usesPermissionFlags="neverForLocation" 是一个重要的隐私保护特性,允许开发者更加透明地向用户展示他们如何使用蓝牙权限。这对于那些确实不需要位置信息的应用程序来说是一个很好的工具,可以帮助减少不必要的权限请求,并提升用户对应用的信任度。然而,开发者应确保遵守这一声明的实际含义,在应用逻辑中避免使用蓝牙扫描结果进行任何形式的位置跟踪。

参考:

【android bluetooth 协议分析 03】【蓝牙扫描详解 2】【app触发蓝牙扫描后,协议栈都做了那些事情】_android 经典蓝牙扫描流程源码分析-CSDN博客

《Android学习笔记》Android12蓝牙扫描不到设备的权限问题_android:usespermissionflags="neverforlocation-CSDN博客

http://www.xdnf.cn/news/1190287.html

相关文章:

  • 在python3.8和pytorch1.8.1的基础上安装tensorflow
  • 对比JS“上下文”与“作用域”
  • kafka中生产者的数据分发策略
  • RabbitMQ面试精讲 Day 5:Virtual Host与权限控制
  • GMP模型
  • Qt 多线程编程最佳实践
  • 公域流量向私域流量转化策略研究——基于开源AI智能客服、AI智能名片与S2B2C商城小程序的融合应用
  • 数据结构 二叉树(2)---二叉树的实现
  • Spring AI Alibaba Video 示例
  • “三十二应身”架构设计:论高扩展性度化系统的实现原理
  • MyBatis_3
  • 想入门网络编程?——网络通信的基本概念
  • Maven之依赖管理
  • ts-node 深入全面讲解
  • OCR工具集下载与保姆级安装教程!!
  • Spring Boot 实战:用 Apache Commons CSV 优雅解析 CSV 文件
  • MySQL 基本查询
  • Linux随记(二十一)
  • JVM 基础架构全解析:运行时数据区与核心组件
  • 商汤InternLM发布最先进的开源多模态推理模型——Intern-S1
  • 开源智能体框架(Agent Zero)
  • 从稀疏数据(CSV)创建非常大的 GeoTIFF(和 WMS)
  • Linux选择题
  • cacti的命令执行和回显
  • Python应用:三局两胜制石头剪刀布游戏
  • 人工智能发展历程
  • Linux应用开发基础知识——Framebuffer应用编程(六)
  • Linux用户
  • almalinux9.6-4070显卡-ollama-qwen2.5-7b
  • rt-thread 5.2.1 基于at-start-f437开发过程记录