ano*_*nol 6 android location flutter google-location-services
我正在使用 Flutter 的location插件开发一个简单的应用程序,其中包含一些基于其示例代码的代码:
var location = new Location();
try {
_currentLocation = await location.getLocation();
} on PlatformException catch (e) {
if (e.code == 'PERMISSION_DENIED') {
_locationMsg = 'Permission denied';
}
_currentLocation = null;
}
Run Code Online (Sandbox Code Playgroud)
如插件页面所示,我添加ACCESS_FINE_LOCATION到 Android 清单中。
问题是,当我在手机上测试应用程序时(使用 Android 9,以防万一),即使位置已启用并且我有 GPS 信号,执行上述代码会导致以下提示:
提示内容为:“为了获得更好的体验,请开启使用 Google 定位服务的设备定位。” ,带有两个按钮:“NO THANKS”和“OK”。
这是非常不友好的:位置已经来自 GPS,没有必要进一步打扰用户。
问题来自哪里,如何避免该提示?我更喜欢报告“未知位置”而不是显示提示。
编辑:请注意,提示没有相关通知用户该位置将被使用,但它是一个谷歌侵犯隐私的功能,当您单击确定,使得谷歌定位精度,如下所述(深藏在设置菜单):
上图写着:“提高定位精度”,带有一个切换按钮。Google 位置准确性:Google 的位置服务通过使用 Wi?Fi 和移动网络来帮助估计您的位置,从而提高了位置准确性。当您的设备处于开机状态时,匿名位置数据将发送给 Google。
单击第一个提示可启用此功能,如果用户不想将其位置数据发送给 Google,则必须手动禁用此功能。禁用它并再次尝试获取位置会导致相同的提示,因此它绝对与警告用户位置数据的使用无关。此外,如果在使用该应用程序之前启用了 Google Location Accuracy ,则该提示永远不会出现在首位,这可能是大多数开发人员从未注意到它的原因。
我知道可以在不启用 Google Location Accuracy 的情况下获取位置数据,因为大多数应用程序都这样做。但是不知道提示从何而来:是不是Flutter的定位插件?我使用的是 Android 9 SDK 的事实?或者示例代码?
看来问题出在location插件上。我尝试将其替换为geolocator, 并修改调用者代码,这次没有出现这样的提示。
我尝试在询问位置之前降低精度,但location插件仍然显示提示。必须有一些底层代码是硬连线的,以在所有情况下请求 Google 位置准确性。
如果谷歌能够提供一种方法,以系统性的“否”来永久禁用提示(这一直是多个 Android 版本的问题),我可能会给他们带来怀疑。
| 归档时间: |
|
| 查看次数: |
3135 次 |
| 最近记录: |