我正在尝试将蓝牙添加到我的应用程序以打印优惠券
我在用
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 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,因为一开始我也有这样的问题,但后来被清除了。
此问题发生在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