1

我需要使用任何可用的提供程序来获取用户位置数据。当所有提供商都被禁用时,我需要弹出一个对话框并让用户能够转到位置服务并启用提供商(GPS 和/或网络可用)。我在检查 Prestigio PMP5197D ULTRA 上是否有提供程序时遇到了问题。它没有 GPS 服务。我使用了以下代码:

// I get and log list of disabled providers...
ArrayList<String> names = (ArrayList<String>)locationManager.getProviders(false);
for(String t: names){
    Log.e("TEST", "DISABLED " + t);
}

// I get and log list of enabled providers...
ArrayList<String> names2 = (ArrayList<String>)locationManager.getProviders(true);
for(String t: names2){
    Log.e("TEST", "ENABLED " + t);
}

在以下设备上一切正常...

NEXUS 7 (2013) (4.3)
设置中的位置 已禁用 已
禁用 被动 已
禁用 gps 已
禁用 网络
已启用 被动

设置中启用的位置 已
禁用 被动 已
禁用 gps 已
禁用 网络
已启用 被动
已启用 gps
已启用 网络

HTC Desire (2.2.2)
LOCATIONS DISABLED IN SETTINGS
DISABLED network
DISABLED passive
DISABLED gps
ENABLED passive

设置中启用的位置
禁用 被动
禁用 gps
启用 网络
启用 被动
启用 gps

但是在这款平板电脑上,我的 GPS 始终处于活动状态,这很奇怪,因为我的设备上没有 GPS。当然,设置中没有 GPS 选项。

Prestigio PMP5197D ULTRA (4.0.3) - 设备没有 GPS
位置 在设置 中
禁用 网络
禁用 被动
禁用 gps
启用 被动
启用 gps

设置中启用的位置 已
禁用网络 已
禁用 被动 已
禁用 gps
已启用 网络
已启用 被动
已启用 gps

当用户尝试单击位置按钮时,如果位置服务被禁用(只有网络可用),我应该为用户弹出前面提到的对话框。但是,由于位置管理器的方法 isProviderEnabled(LocationManager.GPS_PROVIDER) 返回 true,因此看起来 GPS 已启用、实时运行。所以,我没有向用户显示对话框,也没有获取任何数据。有谁知道这个问题的任何解决方法?

4

0 回答 0