dart Android权限BLUETOOTH_SCAN在Android 12中不起作用

h43kikqp  于 2023-04-27  发布在  Android
关注(0)|答案(1)|浏览(328)

当我运行我的项目时显示此错误

`D/BluetoothAdapter(25841): isLeEnabled(): ON
I/flutter (25841): Error starting scan.
E/flutter (25841): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(startScan, Need android.permission.BLUETOOTH_SCAN permission for android.content.AttributionSource@bb6a5b7c: GattService registerScanner, null, null)
E/flutter (25841): #0      BluetoothManager.scan (package:flutter_bluetooth_basic/src/bluetooth_manager.dart:85:7)
E/flutter (25841): <asynchronous suspension>
E/flutter (25841):


我加了`

<uses-permission android:name="android.permission.BLUETOOTH"
        android:maxSdkVersion="30"
        tools:targetApi="donut" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
        android:maxSdkVersion="30"
        tools:targetApi="donut" />
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN"
        android:usesPermissionFlags="neverForLocation"
        android:maxSdkVersion="30"
        tools:targetApi="31" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

`这个权限在androidmanifest,但仍然显示相同的错误,不采取任何蓝牙设备。

lmvvr0a8

lmvvr0a81#

Remove您的权限请求中的android:maxSdkVersion="30"
像这样使用它将权限请求限制为SDK版本30 and older
另外,对于SDK >30,您只需要BLUETOOTH_SCANBLUETOOTH_CONNECT。有关详细信息,请查看documentation
将代码更改为以下内容,它应该可以工作:

<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"
        android:usesPermissionFlags="neverForLocation"
        tools:targetApi="31" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" 
        android:maxSdkVersion="30"/>

相关问题