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

.isProviderEnabled(LocationManager.NETWORK_PROVIDER) is always true in Android

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

这是我的 GPSTracker class:

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");
                }
            }   
    }

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

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

试试这个..

ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected())
{
    return true;
}
else
{
    return false;
}