我有一台运行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的错误,还是我在这里做错了什么?
答案 0 :(得分:1)
引用the documentation for getProviders()
,参数为:
boolean:如果为true,则仅返回当前启用的提供程序。
因此,您的第一次检查仅返回已启用的提供程序。无论是否启用,您的第二次检查都会返回所有提供商。由于两个提供程序都已启用,因此它们会出现在两个列表中。