J'essaie de savoir si l'utilisateur a sélectionné "uniquement lorsqu'il est utilisé" ou "toujours" pour l'emplacement.

https://pub.dev/packages/location_permissions

J'ai essayé ce code du package:

 ServiceStatus serviceStatus =
          await LocationPermissions().checkServiceStatus();
      print(serviceStatus);

Mais il imprime:

ServiceStatus.enabled

Y a-t-il une possibilité (peut-être avec un autre package) de le savoir?

Merci d'avance!

0
Karel Debedts 3 nov. 2019 à 15:34

1 réponse

permission_handler peut le faire.

enum PermissionGroup {
  ...

  /// Android: Fine and Coarse Location
  /// iOS: CoreLocation - Always
  locationAlways,

  /// Android: Fine and Coarse Location
  /// iOS: CoreLocation - WhenInUse
  locationWhenInUse
}

Demande d'autorisations:

final ph = PermissionHandler();
final requested = await ph.requestPermissions([
  PermissionGroup.locationAlways, 
  PermissionGroup.locationWhenInUse
]);

final alwaysGranted = requested[PermissionGroup.locationAlways] == PermissionStatus.granted;
final whenInUseGranted = requested[PermissionGroup.locationWhenInUse] == PermissionStatus.granted;

Ajoutez ces autorisations à AndroidManifest.xml dans la balise <manifest>:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test_project">

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

Et ceux-ci à la balise <dict> d'Info.plist:

    <!-- Permission options for the `location` group -->
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Need location when in use</string>
    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>Always and when in use!</string>
    <key>NSLocationUsageDescription</key>
    <string>Older devices need location.</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>Can I haz location always?</string>
1
Igor Kharakhordin 3 nov. 2019 à 13:59