Flutter“清单中缺少蓝牙权限”

问题描述 投票:0回答:2

我正在尝试将蓝牙添加到我的应用程序以打印优惠券

我在用

permission_handler: ^10.2.0

安卓清单:


    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <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_ADVERTISE" />

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

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

我尝试了多个权限,添加和删除了很多次

请求许可

    Map<Permission, PermissionStatus> status = await [
      Permission.bluetoothConnect,
      Permission.bluetoothAdvertise,
      Permission.bluetooth,
      Permission.bluetoothScan,
    ].request();
    print(status);

我在输出中得到这个

Bluetooth permission missing in manifest
I/flutter (13811): {Permission.bluetooth: PermissionStatus.denied, Permission.bluetoothScan: PermissionStatus.granted, Permission.bluetoothAdvertise: PermissionStatus.granted, Permission.bluetoothConnect: PermissionStatus.granted}
D/FlutterBluePlugin(13811): Connecting to 00:1B:35:11:2B:BA (id: 6)
I/flutter (13811): PlatformException(connect_error, UID 10339 / PID 13811 lacks permission android.permission.BLUETOOTH, java.lang.SecurityException: UID 10339 / PID 13811 lacks permission android.permission.BLUETOOTH

它说清单中缺少蓝牙许可,但它是添加的,我做到了 flutter clean,flutter pub 升级,似乎没有任何效果

任何人都可以帮助我

android flutter bluetooth android-permissions
2个回答
0
投票

似乎在第一种情况下蓝牙权限被拒绝所以尝试在 Android Manifest 中更新它

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="io.github.edufolly.flutterbluetoothserial">
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
</manifest>

并修改SDK版本为29以上

在 flutter Bluetooth Serial 中,这个错误经常发生,所以你可以关注 https://pub.dev/packages/flutter_bluetooth_serial 或他们建议的官方 GitHub,因为一开始我也有这样的问题,但后来被清除了。


0
投票

此问题发生在android 12之后。版本

0.4.0
仅支持android 12以下版本。

我已经在 android 10 上测试了这个包,它工作正常但是对于 android 12 我遇到了这个问题。

维护包的开发者

flutter_bluetooth_serial
长时间不更新包。在存储库上提出了一些问题。并且一些开发人员还提高了该解决方案的公关。

你可以在 github repo 上找到一些建议。 https://github.com/edufolly/flutter_bluetooth_serial/issues/161

这是我使用的其中一个

改变了你的

pubspec.yaml

  • 来自这里:
dependencies:
  flutter_bluetooth_serial: ^0.4.0
  • 对此:
 flutter_bluetooth_serial:
    git:
      url: https://github.com/calmh/flutter_bluetooth_serial.git
      ref: android12
© www.soinside.com 2019 - 2024. All rights reserved.