Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何检查LocationManager.NETWORK\u提供程序是否可用?_Android_Android Location - Fatal编程技术网

Android 如何检查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;

如何检查LocationManager.NETWORK\u提供程序是否可用


我在
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();
    }

}