启用的 GPS 提供商列表与禁用的 GPS 提供商列表相同
List of enabled GPS providers same as list of disabled GPS providers
我有一台 Google Pixel C 平板电脑 运行 Android 7.1.1,没有通过 WiFi 连接到互联网的 SIM 卡。我在我的 Android 清单中设置了以下权限:
<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 错误,还是我做错了什么?
引用the documentation for getProviders()
,参数为:
boolean: if true then only the providers which are currently enabled are returned.
因此,您首先 returns 仅检查已启用的提供商。您的第二次检查 returns 所有 提供程序,无论它们是否启用。由于两个提供程序都已启用,因此它们出现在两个列表中。
我有一台 Google Pixel C 平板电脑 运行 Android 7.1.1,没有通过 WiFi 连接到互联网的 SIM 卡。我在我的 Android 清单中设置了以下权限:
<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 错误,还是我做错了什么?
引用the documentation for getProviders()
,参数为:
boolean: if true then only the providers which are currently enabled are returned.
因此,您首先 returns 仅检查已启用的提供商。您的第二次检查 returns 所有 提供程序,无论它们是否启用。由于两个提供程序都已启用,因此它们出现在两个列表中。