新的二进制Google精度设置,API 28位置模式不正确

问题描述 投票:2回答:1

我目前正在开发一款应用程序,要求用户在其设备上启用高准确度。我有应用程序编程,使用Android弹出窗口和设置API来询问和解决此问题。

要初步检查用户的位置模式是否正确,我使用:

retVal = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE) == Settings.Secure.LOCATION_MODE_HIGH_ACCURACY;

此检查似乎适用于API级别27及以下。

然而,随着API 28中引入的新的二进制Google精确度设置,我遇到了问题。如果我关闭了准确度并使用应用程序中的弹出窗口打开精度设置。即使现在启用了高精度,Settings.Secure.LOCATION_MODE也会返回错误的值。仅当用户从Android中的“设置”应用程序手动更改此设置时,LOCATION_MODE才会返回正确的值。

我想知道是否有一个新API可以准确地返回API 28中的LOCATION_MODE

android android-9.0-pie
1个回答
0
投票

根据Settings.Secure.LOCATION_MODE docs

在API级别28中不推荐使用此常量。要检查位置状态,请使用LocationManager.isLocationEnabled()。要获取位置提供程序的状态,请使用LocationManager.isProviderEnabled(String)。

所以我相信你可以获得你需要的信息:

retVal = LocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) 
&& LocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
© www.soinside.com 2019 - 2024. All rights reserved.