Flutter-geolocator: 仅在 android 10 中使用该应用程序时才允许返回 GeolocationStatus.denied

创建于 2019-10-03  ·  37评论  ·  资料来源: Baseflow/flutter-geolocator

🐛 错误报告

仅在使用应用程序时选择允许在Android 10 Geolocator().checkGeolocationPermissionStatus() 10 GeolocationStatus.denied
Screenshot_1570103723

版本: 5.1.4

平台:
:机器人:安卓

android in progress

最有用的评论

如果使用 5.1.4+1 版本并使用 SDK 28 进行编译,我会遇到同样的问题。如果我在 SDK 29 上编译,则它可以工作。 在运行 Android 10 的 Pixel 3a 上运行它。

我可以确认将compileSdkVersiontargetSdkVersion为 29 解决了这个问题。

所有37条评论

你能告诉我更多关于返回 GeolocationStatus.denied 的代码吗?

我可以用示例应用程序重现它。
只需使用 android 10 模拟器尝试一下。

模拟器是否解决了 GeolocationStatus.denied 错误?

我不确定我明白你的意思

你能告诉我一些关于代码的细节以及你试图创建的内容吗? 我正在尝试重现您的问题,但我需要更多信息。

在带有 android 10 的 android 模拟器上尝试演示应用程序
untitled

我重现了这个问题并得出结论,设备的位置设置已关闭。 要解决此问题,请转到Settings > Location > Use Location > On

该位置已打开,我检查了它,因此当我一直选择允许时,它被认为是授予的。

untitled

该应用程序的输出表明您正在使用 FusedLocationProvider。 建议使用 Google Play 服务 11.6.0 或更高版本,其中包括针对此类的错误修复。

https://imgur.com/a/egX6z6t

如您所见,我正在使用 google play services 19.2.75 并且该位置已开启

它在新的 Android 10 中是一个全新的权限。它不应该给出 Allowed 或 Denied,因为它需要不同的检查。

https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_BACKGROUND_LOCATION

@humazed你想用 Geolocator().checkGeolocationPermissionStatus() 方法实现什么? 如果我始终将位置设置设置为“允许”,则不会出现任何错误。

我用它进行权限检查,即使是演示应用程序也使用它,但它不起作用。
并且只有在您选择仅在使用应用程序时才允许时才会出现问题

在星期四,2019年10月10日在上午10:09斯泰恩面包车Woerkom [email protected]
写道:

@humazed https://github.com/humazed你想用什么来实现
Geolocator().checkGeolocationPermissionStatus() 方法? 我什么都没有
如果我始终将位置设置设置为允许,则会出现错误。


你收到这个是因为你被提到了。
直接回复本邮件,在GitHub上查看
https://github.com/BaseflowIT/flutter-geolocator/issues/334?email_source=notifications&email_token=ACDNYJTFXDG2QBXZGR24XQTQN3PLPA5CNFSM4I5CDEP2YY3PNVWWK3TUL52HS4DFVREXG43MVVMWSXWJKZ05200000000000000000000000000000000000000000000000000000000000000M
或取消订阅
https://github.com/notifications/unsubscribe-auth/ACDNYJS7PSSNNQPH3S7HBWTQN3PLPANCNFSM4I5CDEPQ
.

@humazed我在新的 Android 10 中使用 Geolocator().checkGeolocationPermissionStatus() 方法复制了演示应用程序,并在我选择仅在使用应用程序时允许时检索到 0 个错误。 你能把你的代码发给我看看吗?

我只是克隆了 repo 并在没有任何更改的情况下运行它

我什至创建了一个新的模拟器,以防我当前的模拟器出现问题或其他问题但得到相同的行为

我认为这个问题更多地取决于模拟器的设置。 该应用指出 Google Play 服务存在问题。 您使用的是网络还是您所在的位置不支持 Google Play 服务?

我尝试过新的模拟器,但问题是一样的

该应用程序适用于任何低于 android10 的版本

在我提供的 gif 中,我显示了 Google Play 服务的版本并且位置已启用

如果使用 5.1.4+1 版本并使用 SDK 28 进行编译,我会遇到同样的问题。如果我在 SDK 29 上编译,则它可以工作。 在运行 Android 10 的 Pixel 3a 上运行它。

如果使用 5.1.4+1 版本并使用 SDK 28 进行编译,我会遇到同样的问题。如果我在 SDK 29 上编译,则它可以工作。 在运行 Android 10 的 Pixel 3a 上运行它。

我可以确认将compileSdkVersiontargetSdkVersion为 29 解决了这个问题。

我有同样的问题。

我在 iOS 上也看到了这一点。 getCurrentPosition() 显示对话框以始终启用位置或在使用应用程序时启用位置或拒绝位置访问。 选择“在使用应用程序时启用”会导致出现错误“PERMISISON_DENIED”的异常

我正在使用地理定位器 5.1.3

在 Pixel 4 上重现了类似的错误。

同样的问题。
三星 Galaxy S10 Plus,当点击“保持使用中的访问权限”时获得 PermissionStatus.denied

我们目前正在开发新版本的位置权限插件。 此新版本包括受尊重的使用中访问权限,并且不再返回 PermissionStatus.denied。

Urgh - 我刚刚发现我在生产应用程序中遇到了同样的问题。 我错误地认为,当用户授予正在使用的访问权限时,此方法将返回 PermissionStatus.granted - 所以我似乎不能再依赖于此了。

编辑:两小时后,阅读线程的其余部分并意识到“我可以确认将 compileSdkVersion 和 targetSdkVersion 设置为 29 解决了这个问题”的建议。 作品。

“我可以确认将 compileSdkVersion 和 targetSdkVersion 设置为 29 解决了这个问题。” 解决了这个问题,直到我在 AndroidManifest.xml 中添加了这个

<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

@JBBx2016我们正在研究 android.permissions.ACCES_BACKGROUND_LOCATION 权限。 权限修复后,它可以解决您的错误。

任何更新?

任何更新?

任何更新

不适用于 Android 10 设备。 :|

作为临时解决方法,您可以使用我的叉子
分支主
我将权限内容从明显损坏的 location_permissions 移动到另一个插件 permission_handler

我的应用程序在 Google Play 服务弹出后停止工作,我用Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);回答“拒绝”、“授权”等
最好它工作正常
Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.best);
带模拟器的 Android 10,最新的稳定分支 flutter。

Geolocator locator = Geolocator();
    locator
        .checkGeolocationPermissionStatus(
            locationPermission: GeolocationPermission.locationWhenInUse)

需要在参数中传递权限。
GeolocationPermission.locationWhenInUse

在 6.0.0 版本中修复

此页面是否有帮助?
0 / 5 - 0 等级