如何检查 LocationManager.NETWORK_PROVIDER 是不是可用?

Posted

技术标签:

【中文标题】如何检查 LocationManager.NETWORK_PROVIDER 是不是可用?【英文标题】:How to check if LocationManager.NETWORK_PROVIDER is available?如何检查 LocationManager.NETWORK_PROVIDER 是否可用? 【发布时间】:2011-12-02 03:42:15 【问题描述】:

如何查看LocationManager.NETWORK_PROVIDER 是否可用?

我在androidManifest.xml 中启用了,但我需要在代码中检查它是否无法使用GPS_PROVIDER。有人可以帮我吗?

【问题讨论】:

【参考方案1】:

如何查看LocationManager.NETWORK_PROVIDER是否可用?

使用此部分检查 Network Provider 是否已启用:

network_enabled=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

这将返回一个 boolean 值:

true- 如果启用。

false - 未启用。

另外用于检查 GPS 提供商是否已启用:

gps_enabled=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

这将返回一个 boolean 值:

true- 如果启用。

false - 未启用。

如果您希望用户启用网络或 GPS 提供商,请使用此代码将用户重定向到设置页面:

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);

【讨论】:

enable 这个词与问题和你的答案之间的 available 这个词似乎有歧义。我也在寻找这个问题的解决方案,但不确定这个答案是否是我正在寻找的。​​span> 【参考方案2】:

这是使用网络提供商和/或 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;
    

这里它将检查 GPS 提供程序是否启用,然后将位置获取到 gpsLocation,如果还使用网络提供程序获取位置,然后检查位置对象返回的最快时间

如果启用了其中一个提供程序,则将返回该位置对象

【讨论】:

【参考方案3】:

因为这里总是有点奇怪 ;=)

我自己编写了一段代码检查网络提供商的可用性

把它放在你的 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();
    


玩得开心,希望这对某人有帮助:) 正在寻找那段代码:=)

干杯 :)

【讨论】:

以上是关于如何检查 LocationManager.NETWORK_PROVIDER 是不是可用?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查元素是不是没有特定的类?

如何进行PYTHON语法检查

单击然后检查时如何设置字体真棒检查图标[关闭]

如何编写Windows安全检查脚本

如何检查网络关闭

如何检查 XmlAttributeCollection 中是不是存在属性?