当我检查时
boolean networkReady=manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
我在某些三星手机上都是如此,尽管在设置中不允许使用无线位置。
有没有其他方法可以检查此设置并在所有手机上获得正确的值?
答案 0 :(得分:7)
在我的应用程序中使用的一些不错的网络工具函数下面,所有的工作就像一个魅力! 并且对于位置轮询,肯定 - > https://github.com/commonsguy/cwac-locpoll
希望这会有所帮助...
public static boolean checkInternetConnection(Context context) {
ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET?
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected()) {
return true;
} else {
Log.w(TAG, "Internet Connection NOT Present");
return false;
}
}
public static boolean isConnAvailAndNotRoaming(Context context) {
ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected()) {
if(!conMgr.getActiveNetworkInfo().isRoaming())
return true;
else
return false;
} else {
Log.w(TAG, "Internet Connection NOT Present");
return false;
}
}
public static boolean isRoaming(Context context) {
ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
return (conMgr.getActiveNetworkInfo()!=null && conMgr.getActiveNetworkInfo().isRoaming());
}
答案 1 :(得分:3)
你也可以尝试这样:
public boolean isDataConnectionAvailable(Context context){
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if(info == null)
return false;
return connectivityManager.getActiveNetworkInfo().isConnected();
}
public boolean isGpsEnabled(LocationManager manager){
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
return false;
}
return true;
}
public boolean isLocationByNetworkEnabled(LocationManager manager){
if ( !manager.isProviderEnabled( LocationManager.NETWORK_PROVIDER ) ) {
return false;
}
return true;
}
答案 2 :(得分:0)
列表中的提供程序是否也由getProviders(true);返回?也许该设备认为应始终启用网络位置提供程序以提供PASSIVE_PROVIDER?似乎打破了我。您认为哪种三星设备出现此行为?