【发布时间】:2022-03-04 15:30:38
【问题描述】:
我编写了一个 xamarin 表单应用程序,它使用 Plugin.BLE NuGet 包扫描并连接到 ble 设备。它在我的手机上正常工作/调试,直到它(我的手机)更新到 Android 12.0 - API 31。我正在使用插件中的基本 vanilla 实现:
adapter.DeviceDiscovered += (s,a) => deviceList.Add(a.Device);
await adapter.StartScanningForDevicesAsync();
我发现 Android 12 需要不同的运行时权限 ([https://developer.android.com/guide/topics/connectivity/bluetooth/permissions#declare-android11-or-lower][1]) 我有试图在清单文件中容纳它们:
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<application android:label="Rep_001.Android" android:theme="@style/MainTheme"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />https://developer.android.com/guide/topics/connectivity/bluetooth/permissions#declare-android11-or-lower
但可惜我没有运气。我在想我需要在运行时询问用户扫描和连接权限,但我不知道该怎么做,因为 Xamarin.Essentials 没有蓝牙权限请求。
【问题讨论】:
标签: xamarin bluetooth bluetooth-lowenergy android-12