使用Python-for-Android/Pyjnius和Kivy时,蓝牙权限校验失效但WiFi权限校验正常的问题求助
使用Python-for-Android/Pyjnius和Kivy时,蓝牙权限校验失效但WiFi权限校验正常的问题求助
我在使用Python结合Python-for-Android/Pyjnius和Kivy开发时,遇到了按钮点击触发权限校验的问题。
先说说正常工作的WiFi权限校验部分:
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文件里也添加了对应的权限项。
需要说明的是,WiFi和蓝牙的扫描功能都被放在了独立的Thread中,但为什么WiFi的权限校验正常,蓝牙却不行呢?
另外,我的测试设备是三星S9(Android 10),首次启动应用时,系统会弹出ACCESS_FINE_LOCATION权限的请求,但从来不会请求蓝牙权限,不过此时蓝牙扫描功能是可以正常工作的。
有没有人知道这是怎么回事?
备注:内容来源于stack exchange,提问作者kannic
相关产品推荐
相关产品推荐

