相关疑难解决方法(0)

isProviderEnabled(LocationManager.NETWORK_PROVIDER)返回false

我使用NETWORK_PROVIDER来获得latitudelongitude的地方.

我已经检查了"位置和安全性"中的设置并启用了"使用无线网络".但"isProviderEnabled(LocationManager.NETWORK_PROVIDER)"总是回来false.

谁能帮我?先感谢您!

这是我的代码:

LocationManager locManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean isEnableGPS=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
boolean isEnableNTW=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Log.d(TAG, isEnableGPS+", "+isEnableNTW);
Run Code Online (Sandbox Code Playgroud)

AndroidMainfest.xml中的权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)

android locationmanager android-location

13
推荐指数
1
解决办法
1万
查看次数

LocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)不可靠,为什么?

我的应用程序的一个用户报告说应用程序告诉网络位置已关闭,即使他确实打开了它.他给我发了几张屏幕截图,他们让我思考;

LocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
Run Code Online (Sandbox Code Playgroud)

工作不正常.他的手机运行的是Android 4.1.2,首先我认为是导致这个问题的原因.但事实并非如此.他也给我发了一个屏幕截图.

然后我用Google搜索并找到了这个.这个问题似乎对我有所帮助,但不幸的是,回答对这个案子没有帮助,提问者没有进一步追求.

我的应用程序与位置有关,并且一直使用LocationManager.isProviderEnabled来了解GPS和网络的位置是打开还是关闭.我从未被告知我的应用程序直到最近才正确地知道这些设置.他是第一个报告此问题的用户.我了解到还有另一种方法可以通过查看Secure.LOCATION_PROVIDERS_ALLOWED了解GPS和网络的位置设置.为了看看这个方法如何在他的手机上工作,我写了一个简单的应用程序并让他跑.这个应用程序做简单的任务,并在屏幕上显示文本

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
{
    string = "GPS=on\n";
}
else
{
    string = "GPS=off\n";
}
if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
{
    string += "Network=on\n";
}
else
{
    string += "Network=off\n";
}
String status = android.provider.Settings.Secure.getString(getContentResolver(), Secure.LOCATION_PROVIDERS_ALLOWED);
if(status.contains("gps"))
{
    string += "GPS=on\n";
}
else
{
    string += "GPS=off\n";
}
if(status.contains("network"))
{
    string += "Network=on\n";
}
else
{
    string += "Network=off\n";
}
Run Code Online (Sandbox Code Playgroud)

他再次发回屏幕截图.它看起来;

GPS=on
Network=off
GPS=on
Network=on
Run Code Online (Sandbox Code Playgroud)

这个结果并没有让我开心.这可能有一些可能性.

  • 正如其他人之前所质疑的那样,这个问题已经出现在一些手机上.
  • 谷歌以4.1.2打破了这一局面.isProviderEnabled不适用于此版本.
  • 虽然未记录,但从4.1.2开始,isProviderEnabled将无法像之前那样工作.
  • 不,谷歌改变了一切.这是这款手机的错误.

现在我的问题是;

  1. LocationManager.isProviderEnabled对Android 4.1.2及更高版本仍然有效吗? …

android locationmanager

7
推荐指数
1
解决办法
2万
查看次数

无论用户位置设置如何,如何确定Android设备的当前国家/地区位置?

即使用户的设备已关闭GPS并且不允许应用访问其位置,我也需要确定设备所在的国家/地区(iso3).

我还需要考虑没有SIM卡的平板电脑,因此不能使用telephonyManager.

出于这个原因,我不相信我可以使用位置管理器(也是因为这些原因:LocationManager requestLocationUpdates不起作用)

我认为我需要的方法是向第三方ip位置api发出简单的HTTP请求:例如 http://www.ipinfodb.com/ip_location_api.phphttps://freegeoip.net

这是最好的方法吗?什么是最好的开放api使用?

android geolocation w3c-geolocation

7
推荐指数
1
解决办法
4653
查看次数