蓝牙权限检查不起作用,但 WiFi 可以

问题描述 投票:0回答:1

我在使用

Python
Python-for-Android/Pyjnius
中按下
Kivy
中的按钮时验证权限时遇到问题。

from android.permissions import check_permission
# Checks permissions returns True if app has permission
if check_permission('android.permission.ACCESS_FINE_LOCATION'):
   # [...] wifi scan code

上面按预期工作,在应用程序安装时,它请求访问精细位置,我点击接受,打开扫描网络的应用程序按预期工作,当我将其关闭时,它会在

RecycleView
上显示一条消息,表示权限被拒绝。

但是,蓝牙检查是另一回事。

from android.permissions import check_permission, Permission
# Check permission returns True if app has all permissions
permissions = [Permission.BLUETOOTH_SCAN, Permission.BLUETOOTH_CONNECT, Permission.ACCESS_FINE_LOCATION]
granted = True
for permission in permissions:
    granted = granted and check_permission(permission)

if granted:
   # [...] bluetooth code scan

当我的应用程序未验证权限时,它运行良好,当我将它们放入“权限被拒绝”时,尽管在我们单独的

request_permissions.py
脚本中,我们在应用程序的构建中请求这些权限,并且我们的
buildozer.spec
也拥有这些权限。

需要注意的是,我们负责扫描的两个功能都放在单独的

Threads
中,但即便如此,为什么WiFi可以工作而蓝牙却不能呢?

在我的硬件 Samsung S9 - Android 10 上,尽管扫描仪可以工作,但它从不请求蓝牙权限,但会在首次应用程序启动时请求

ACCESS_FINE_LOCATION
权限。

有人知道这是为什么吗?

python android bluetooth pyjnius python-for-android
1个回答
0
投票

好吧,原来是我的手机

Android 10
出了问题。根据 Android API 文档,您需要额外的附加权限。

https://developer.android.com/develop/connectivity/bluetooth/bt-permissions

© www.soinside.com 2019 - 2024. All rights reserved.