Search code examples
androidreact-nativebluetoothbluetooth-lowenergyandroid-permissions

Not seeing always allow in android location permission


I have been trying to use an react native ble librairie (react-native-ble-manager). In order to use this the user have to allow location permission (as explain in the documentation android.permission.ACCESS_COARSE_LOCATION and android.permission.ACCESS_FINE_LOCATION if android API >= 29. I request the autorisation as their example with: (PermissionsAndroid is from the react-native librairie) :

if (Platform.OS === 'android' && Platform.Version >= 23) {
            PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION).then((result) => {
                if (result) {
                    console.log("Permission is OK");
                } else {
                    PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION).then((result) => {
                        if (result) {
                            console.log("User accept");
                        } else {
                            console.log("User refuse");
                        }
                    });
                }
            });
        }

On my device the pop-up ask me for the autorisation with only two choices :

  • Only when the application is running
  • Refuse

But with their example I have 3 choices the two others and "always authorise"

And for some reason I'm not able to scan peripheral if I don't always approve (I have been able to change to always for my application by going in the settings of it).

Part of my android manifest (android/app/src/main) (as you can see I have background_location)

<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"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

I'm sure I'm missing an obvious thing but I can't see what.. In advance thank you :)


Solution

  • For those having the same issue : my phone has android 11 so it can't be directly requested in the pop-up. You have to indicate to your user how to change the permission Source : https://developer.android.com/training/location/permissions