Android 12 新蓝牙权限

时间:2021-05-27 13:16:33

标签: android bluetooth android-permissions android-bluetooth android-12

蓝牙是我们应用的主要依赖项。因此,我们已经尝试实施新的 Android 12 蓝牙权限。我们唯一的资源是Android developers New Bluetooth permissions in Android 12。只是说添加权限

<块引用>

"android.permission.BLUETOOTH_CONNECT"

"android.permission.BLUETOOTH_SCAN"

我添加并获得了两个和当然位置的运行时权限(通常为 pre 12))。
我的代码库中没有其他变化。应该?我不知道。所以,问题是我的应用程序找不到 BLE 设备。我找不到原因。

您有什么建议或资源吗?

3 个答案:

答案 0 :(得分:0)

<块引用>

如果您希望您的应用启动设备发现或操作 蓝牙设置,必须在里面声明BLUETOOTH_ADMIN权限 除了 BLUETOOTH 权限。大多数应用程序需要此权限 仅用于发现本地蓝牙设备的能力。不要使用 此权限授予的其他能力,除非该应用程序是 “电源管理器”,可根据用户请求修改蓝牙设置。 在您的应用清单文件中声明蓝牙权限

developer android 我们看到您必须添加

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

在你的清单文件中,但你没有添加它来发现其他设备我认为这是你的问题的来源

答案 1 :(得分:0)

我不确定他们是否宣布了有关蓝牙更改的任何内容,但如果没有其他帮助,他们最近推出了这可能对您的用例有所帮助,除非您做更复杂的事情。

https://developer.android.com/guide/topics/connectivity/companion-device-pairing#kotlin

在较新的版本中,如果这可以满足您的所有需求,您也不再需要位置权限。

关于示例:您可以不包含这两行:

    .setNamePattern(Pattern.compile("My device"))
    .addServiceUuid(ParcelUuid(UUID(0x123abcL, -1L)), null)

我用它来搜索设备没有任何问题,连接工作类似

答案 2 :(得分:0)

我刚刚添加到清单中:

<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

然后我像其他任何人一样从 Main Activity 请求这些权限。 为了请求许可,我正在使用图书馆

implementation 'pub.devrel:easypermissions:3.0.0'

那么你就可以调用这个函数了

public static final String[] BLUETOOTH_PERMISSIONS_S = { Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_CONNECT} ;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
     if (!EasyPermissions.hasPermissions(this, BLUETOOTH_PERMISSIONS_S)) {
                EasyPermissions.requestPermissions(this, message, yourRequestCode,BLUETOOTH_PERMISSIONS_S);
            }
        }

并覆盖 onRequestPermissionResult

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }
相关问题