Błąd podczas skanowania urządzeń bluetooth

0

Gdy próbuje skanować urządzenia bluetooth za pomocą biblioteki flutter_bluie i metody startScan(). Cały czas działało i gdy zostawiałem już wątek bluetootha i po jakimś czasie sprawdzdzam i nagle wyskakuje błąd:

PlatformException (PlatformException(startScan, Need android.permission.BLUETOOTH_SCAN permission for AttributionSource { uid = 10432, packageName = com.example.my_app, attributionTag = null, token = android.os.BinderProxy@f018758, next = null }: GattService registerScanner, java.lang.SecurityException: Need android.permission.BLUETOOTH_SCAN permission for AttributionSource { uid = 10432, packageName = com.example.my_app, attributionTag = null, token = android.os.BinderProxy@f018758, next = null }: GattService registerScanner
at android.os.Parcel.createExceptionOrNull(Parcel.java:2438)
at android.os.Parcel.createException(Parcel.java:2422)
at android.os.Parcel.readException(Parcel.java:2405)
at android.os.Parcel.readException(Parcel.java:2347)
at android.bluetooth.IBluetoothGatt$Stub$Proxy.registerScanner(IBluetoothGatt.java:1886)
at android.bluetooth.le.BluetoothLeScanner$BleScanCallbackWrapper.startRegistration(BluetoothLeScanner.java:519)
at android.bluetooth.le.BluetoothLeScanner.startScan(BluetoothLeScanner.java:305)
at android.bluetooth.le.BluetoothLeScanner.startScan(BluetoothLeScanner.java:161)
at com.pauldemarco.flutter_blue.FlutterBluePlugin.startScan21(FlutterBluePlugin.java:811)
at com.pauldemarco.flutter_blue.FlutterBluePlugin.startScan(FlutterBluePlugin.java:747)
at com.pauldemarco.flutter_blue.FlutterBluePlugin.onMethodCall(FlutterBluePlugin.java:253)
at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267)
at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292)
at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8751)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
, null))

Takie uprawnienia dałem:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
1

Jeszcze sie upewnij, że pozwoliłeś aplikacji w systemie korzystać z nich. Manifest to jedno, ale potem jest kwestia przyznawania uprawnień

0
panryz napisał(a):

Jeszcze sie upewnij, że pozwoliłeś aplikacji w systemie korzystać z nich. Manifest to jedno, ale potem jest kwestia przyznawania uprawnień

aplikacja nie miała uprawnień, przyznałem je i działa

0

Musisz to w kodzie obłużyć, żeby pokazać użytkownikowi dialog do przyznawania uprawnień

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.