如何从应用程序本身启用位置跟踪权限



我正在使用google_maps_flutter和位置插件来显示用户在我的应用程序中的位置。我想从我的应用程序本身启用gps权限,这似乎很琐碎,但当我尝试使用插件(如权限插件(时,我只能启用应用程序权限来访问位置,而不能启用gps权限。如果没有许可,我可以检查位置并举杯庆祝,但我如何从应用程序本身启用它?

我认为您想要的是打开位置设置,而不是AndroidManifest中包含的权限。此外,如果你需要的话,大多数地理定位器插件都有一个请求权限方法,而不是设置。

假设你想让用户打开并打开位置,在Android中,我认为你需要创建一个意图,所以它看起来像这样。。

import 'package:android_intent/android_intent.dart';
Then in your class...
static Future makeLocationDialogRequest() async { 
final AndroidIntent intent = new AndroidIntent(
action: 'android.settings.LOCATION_SOURCE_SETTINGS',);
intent.launch();
}

然后,稍后可能会使用您选择的插件进行检查,以检查用户是否确实启用了该位置。

注意,这只适用于Android,所以请事先检查它是否是Android设备,例如

var platform = Theme.of(context).platform;

关于android_intent的更多信息,请点击

通常,您只需要包括manifest.xml文件(在Android上(上的权限,例如:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-permission android:name="android.permission.INTERNET" />

或在iOS上,通过将此值添加到您的info.plist

NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription

但是,如果您想在运行时检查询问特定权限,您可以使用simple_permissions包执行此操作。

最新更新