You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIT App Inventor开发蓝牙连ESP32 Cam时BLUETOOTH_CONNECT权限被拒求助

解决MIT App Inventor + Android 13下BluetoothLE扩展的BLUETOOTH_CONNECT权限问题

问题描述

我在使用MIT App Inventor开发一款通过蓝牙连接ESP32 Cam的应用时,遇到权限错误:

Error 908:The permission BLUETOOTH_CONNECT has been denied. Please enable it in the Settings app.

当前使用的权限申请代码:

when Screen1.Initialize
    call Screen1.AskForPermission
                 permissionName "BLUETOOTH_CONNECT"

when Screen1.PermissionGranted
    if get(permissionName) = "BLUETOOTH_CONNECT"
        call Screen1.AskForPermission
                     permissionName "BLUETOOTH_SCAN"

设备为Galaxy S22(Android 13),尝试过申请位置权限但无效;查询得知MIT App Inventor应自动处理权限但未生效,且没有合适工具修改AndroidManifest.xml;应用设置中仅显示位置、音乐等权限,无蓝牙权限选项,推测是Android 13权限系统的适配问题。

可行解决方案

1. 调整权限申请逻辑与顺序

Android 13对BLE权限的触发逻辑有变更,需按「位置权限→扫描权限→连接权限」的顺序申请,修改代码如下:

when Screen1.Initialize
    call Screen1.AskForPermission
                 permissionName "ACCESS_FINE_LOCATION"

when Screen1.PermissionGranted
    if get(permissionName) = "ACCESS_FINE_LOCATION"
        call Screen1.AskForPermission
                     permissionName "BLUETOOTH_SCAN"

when Screen1.PermissionGranted
    if get(permissionName) = "BLUETOOTH_SCAN"
        call Screen1.AskForPermission
                     permissionName "BLUETOOTH_CONNECT"

2. 更新BluetoothLE扩展

确保使用最新版本的BluetoothLE扩展,旧版本未适配Android 13的权限规则,可在MIT App Inventor的扩展市场重新下载安装。

3. 手动查找蓝牙权限入口

Android 13中蓝牙权限可能隐藏在「所有权限」分类下,按以下路径开启:

  • 打开手机「设置」→「应用」→找到你的应用→「权限」
  • 点击「所有权限」(部分机型为「更多权限」),找到蓝牙相关权限并授予。

4. 三星Galaxy S22专属适配

三星设备权限管理有额外限制,可尝试:

  • 重启设备后卸载重装应用,再触发权限申请流程。
  • 进入「设置」→「隐私」→「权限管理器」,搜索「蓝牙」并为应用授权。

内容的提问来源于stack exchange,提问作者Stefan Andrei Ghiță

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:39:54