启用的GPS提供商列表与禁用的GPS提供商列表相同

时间:2017-07-31 16:30:31

标签: android location android-gps

我有一台运行Android 7.1.1的Google Pixel C平板电脑,没有通过WiFi连接到互联网的SIM卡。我在Android Manifest中设置了以下权限:

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

我正在请求用户的许可:

ActivityCompat.requestPermissions(this, new String[]  {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_FINE_LOCATION);

当我列出启用和禁用的GPS提供商时,列表是相同的:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

List<String> providersEnabled = locationManager.getProviders(true);
LogHelper.d("location", "Enabled GPS providers:");
for (String providerEnabled:providersEnabled)
    Log.d("location", providerEnabled);

List<String> providersDisabled = locationManager.getProviders(false);
Log.d("location", "Disabled GPS providers:");
for (String providerDisabled:providersDisabled)
    Log.d("location", providerDisabled);

启用GPS提供商:

  • 被动
  • 网络

已禁用的GPS提供商:

  • 被动
  • 网络

这是Android的错误,还是我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

引用the documentation for getProviders(),参数为:

  

boolean:如果为true,则仅返回当前启用的提供程序。

因此,您的第一次检查仅返回已启用的提供程序。无论是否启用,您的第二次检查都会返回所有提供商。由于两个提供程序都已启用,因此它们会出现在两个列表中。