我试图从这样的远程蓝牙设备中取出UUIDS:
device.fetchUuidsWithSdp();
这将在所有设备上静默工作,无需用户交互,除了那些使用Android 6.0的设备明显要求配对对话框连接远程设备以获取UUID。这是预期的行为吗?这记录在哪里?有没有办法触发UUID发现而不必明确地从另一端允许它?
答案 0 :(得分:3)
我通过使用隐藏的sdpSearch方法而不是fetchUuidsWithSdp找到了解决方法。这需要一点反思。这对我在Android 6.0和5.1.1上工作,没有设备试图配对。 希望这会有所帮助,并随时改进相当差的异常处理。
_set_invalid_parameter_handler
编辑: sdpSearch是在android 6.0中添加的,因此它不适用于早期版本
答案 1 :(得分:2)
<强>更新强>
Google's official response to your question:
您好, 我们知道您对特定用法有疑问,可以在stackoverflow中查找。
https://stackoverflow.com/questions/14812326/android-bluetooth-get-uuids-of-discovered-devices
由于
在Android 6.0中,权限发生了变化。引入运行时权限,而不是在安装应用程序时全局接受所有应用程序所需的权限。
简而言之,权限类型大致分为正常或危险两种类型。任何侵犯用户隐私的许可都被视为危险。
权限也被放入具有类似权限的组中,例如访问精确位置和粗略位置。
在使用应用程序接受被视为危险的特定群组的许可时,用户可以选择。一旦为该应用程序运行授予特定组的权限,就不会再次询问同一组内的权限,但会根据需要向其他组请求权限。
请参阅以下详细信息:
此版本引入了一种新的权限模型,用户现在可以在运行时直接管理应用程序权限。此模型为用户提供了更好的可见性和对权限的控制,同时简化了应用程序开发人员的安装和自动更新过程。用户可以单独为已安装的应用授予或撤消权限。
在针对Android 6.0(API级别23)或更高版本的应用中,请确保在运行时检查并请求权限。要确定您的应用是否已被授予权限,请调用新的checkSelfPermission()方法。要请求权限,请调用新的requestPermissions()方法。即使您的应用未定位到Android 6.0(API级别23),您也应该在新的权限模型下测试您的应用。
... /
Beginning with Android 6.0 (API level 23),用户在运行时授予和撤消应用权限,而不是在安装应用时这样做。因此,您必须在更广泛的条件下测试您的应用。在Android 6.0之前,您可以合理地假设,如果您的应用程序正在运行,它具有它在应用程序清单中声明的所有权限。在新的权限模型下,您无法再做出这种假设。
权限归类为normal or dangerous
蓝牙访问被视为正常许可,而配对或阅读应用程序的详细信息则被视为危险。
危险权限涵盖应用程序需要涉及用户私人信息的数据或资源的区域,或者可能潜在地影响用户的存储数据或其他应用程序的操作。例如,阅读用户联系人的能力是一种危险的许可。如果应用声明它需要危险权限,则用户必须明确授予该应用的权限。
因此,当从设备请求信息时:
如果应用请求其清单中列出的危险权限,并且该应用当前在权限组中没有任何权限,系统会向用户显示一个对话框,描述该应用想要访问的权限组。该对话框不描述该组中的特定权限。例如,如果某个应用请求READ_CONTACTS权限,系统对话框只会说该应用需要访问该设备的联系人。如果用户授予批准,系统将为应用程序提供其请求的权限。
有关实施的详情,请参阅Working With System Permissions。
修改 回复您的评论
有multiple issues bluetooth bugs和android 6.0的发布。与5.0一样,预计这些将在下一个补丁中修复。但是,我不认为你的问题是一个错误。
在看到your post here on google之后,我的回答直接回答了你所认为的错误。
您的屏幕截图:
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "me.bluetoothuuidsample"
minSdkVersion 18
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
棉花糖设备的运行状态与运行时权限完全相同,但我相信谷歌会为您确认这一点。
为了防止在此阶段处理转换,请使用目标sdk小于23。
targetSdkVersion 22
这个Cheesefactory博客详细介绍。 Everything every Android Developer must know about new Android's Runtime Permission
编辑2
获取UUID需要位置权限,此处有帖子详细说明:https://stackoverflow.com/a/33045489/3956566