Android 如何检查LocationManager.NETWORK\u提供程序是否可用?
如何检查LocationManager.NETWORK\u提供程序是否可用Android 如何检查LocationManager.NETWORK\u提供程序是否可用?,android,android-location,Android,Android Location,如何检查LocationManager.NETWORK\u提供程序是否可用 我在AndroidManifest.xml中启用了,但我需要在代码中检查,如果无法使用GPS\u提供程序。有人能帮我吗?这是使用网络提供商和/或GPS提供商获取位置的代码 private Location getLocation() { Location gpslocation = null; Location networkLocation = null;
我在
AndroidManifest.xml
中启用了,但我需要在代码中检查,如果无法使用GPS\u提供程序
。有人能帮我吗?这是使用网络提供商和/或GPS提供商获取位置的代码
private Location getLocation() {
Location gpslocation = null;
Location networkLocation = null;
if(locMan==null){
locMan = (LocationManager) getApplicationContext() .getSystemService(Context.LOCATION_SERVICE);
}
try {
if(locMan.isProviderEnabled(LocationManager.GPS_PROVIDER)){
locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000, 1, gpsListener);
gpslocation = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
if(locMan.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000, 1, gpsListener);
networkLocation = locMan.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
} catch (IllegalArgumentException e) {
//Log.e(ErrorCode.ILLEGALARGUMENTERROR, e.toString());
Log.e("error", e.toString());
}
if(gpslocation==null && networkLocation==null)
return null;
if(gpslocation!=null && networkLocation!=null){
if(gpslocation.getTime() < networkLocation.getTime()){
gpslocation = null;
return networkLocation;
}else{
networkLocation = null;
return gpslocation;
}
}
if (gpslocation == null) {
return networkLocation;
}
if (networkLocation == null) {
return gpslocation;
}
return null;
}
private Location getLocation(){
位置gpslocation=null;
位置networkLocation=null;
if(locMan==null){
locMan=(LocationManager)getApplicationContext().getSystemService(Context.LOCATION\u服务);
}
试一试{
if(Localman.isProviderEnabled(LocationManager.GPS_提供程序)){
Localman.RequestLocationUpdate(LocationManager.GPS\U提供程序,1000,1,gpsListener);
gpslocation=locMan.getlastnownlocation(LocationManager.GPS\u提供程序);
}
if(Localman.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
Localman.RequestLocationUpdate(LocationManager.NETWORK_提供程序,1000,1,gpsListener);
networkLocation=locMan.getLastKnownLocation(LocationManager.NETWORK\u提供程序);
}
}捕获(IllegalArgumentException e){
//Log.e(ErrorCode.ILLEGALARGUMENTERROR,e.toString());
Log.e(“error”,e.toString());
}
if(gpslocation==null&&networkLocation==null)
返回null;
if(gpslocation!=null&&networkLocation!=null){
if(gpslocation.getTime()
在此,它将检查GPS提供程序是否启用,然后将位置获取到gpsLocation如果还使用网络提供程序获取位置,则检查位置对象返回的最快时间
如果其中一个提供程序处于启用状态,则将返回该位置对象
如何检查LocationManager.NETWORK\u提供程序是否可用
使用此部分检查是否启用了网络提供程序:
network_enabled=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
这将返回一个布尔值:
为真-如果启用
错误-未启用
另外,用于检查GPS提供程序是否已启用:
gps_enabled=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
这将返回一个布尔值:
为真-如果启用
错误-未启用
如果希望用户启用网络或GPS提供商,请使用此代码将用户重定向到设置页面:
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
因为这里总是有点奇怪;=) 我自己编写了一些代码来检查网络提供商的可用性: 将其放入onCreate()方法中:
checkIfNetworkLocationAvailable(mContext_);
而这个在代码中的其他地方;=)
玩得开心,希望这对某人有帮助:)
正是在搜索这段代码:=)
干杯:)问题和答案之间的
启用
一词与可用一词似乎模棱两可。我也在寻找这个问题的解决方案,但不确定这个答案是否就是我想要的。
/**
* checks if NETWORK LOCATION PROVIDER is available
*/
private void checkIfNetworkLocationAvailable(Context context) {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean networkLocationEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!networkLocationEnabled){
//show dialog to allow user to enable location settings
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(mContext_.getString(R.string.txtTip));
dialog.setMessage(R.string.msgLocationServicesDisabled);
dialog.setPositiveButton(mContext_.getString(R.string.txtYes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
}
});
dialog.setNegativeButton(mContext_.getString(R.string.txtNo), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//nothing to do
}
});
dialog.show();
}
}