.isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为真

Posted

技术标签:

【中文标题】.isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为真【英文标题】:.isProviderEnabled(LocationManager.NETWORK_PROVIDER) is always true in Android 【发布时间】:2015-03-16 02:56:33 【问题描述】:

我不知道为什么,但我的变量 isNetowrkEnabled 总是返回 true。我的设备上的互联网是否启用并不重要。

这是我的GPSTracker 班级:

public class GPSTracker extends Service implements LocationListener

        private final Context mContext;

        boolean isNetworkEnabled = false;    
        boolean canGetLocation = false;

        Location location; // location

        protected LocationManager locationManager;

        public GPSTracker(Context context) 
            this.mContext = context;
            getLocation();
        

    public Location getLocation() 
            locationManager = (LocationManager) mContext
                    .getSystemService(LOCATION_SERVICE);

            isNetworkEnabled = locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

            if (!isGPSEnabled && !isNetworkEnabled) 
                // no network provider is enabled
             else 
                this.canGetLocation = true;
                if (isNetworkEnabled) 
                    System.out.println("Network enabled");
                 else 
                    System.out.println("Network disabled");
                
               
    

你知道这段代码有什么问题吗?

【问题讨论】:

【参考方案1】:

您的代码很可能没有任何问题。是否启用提供程序取决于设置应用程序的位置部分(或设备制造商在其他地方提供的等效控件,例如在应用程序小部件中)。只要未在“设置”中禁用网络提供商,isProviderEnabled(LocationManager.NETWORK_PROVIDER) 就会返回true启用的提供程序与提供程序是否工作没有任何关系,因为您没有网络连接。

【讨论】:

我认为如果我在我的设备上禁用 wi-fi 和移动数据就足够了,但事实上我必须在定位服务中这样做。谢谢:)【参考方案2】:

试试这个..

ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected())

    return true;

else

    return false;

【讨论】:

以上是关于.isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为真的主要内容,如果未能解决你的问题,请参考以下文章

.isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为真

当 gps 关闭时,.isProviderEnabled(LocationManager.NETWORK_PROVIDER) 总是返回 false?

locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) 使用 Wi-Fi 总是返回 false

isProviderEnabled()永远不会被称为android

Android google maps v2 isproviderEnabled(LocationManager.NETWORK_PROVIDER,0,0,this) 总是返回 false

Eclipse 报错The method xxx of type must override a superclass methodDescription Resource Path Locati