2

When i use GpsProvider i got current location.But i need to get current location only when i get wifi network using wifi. I use the NetworProvider to achive it but i cant
the following code i used

    public static void requestSingleUpdate(final Context context,
        final LocationCallback callback) {

    final LocationManager locationManager = (LocationManager) context
            .getSystemService(Context.LOCATION_SERVICE);

    boolean isNetworkEnabled = locationManager
            .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    if (isNetworkEnabled) {
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);

        locationManager.requestSingleUpdate(criteria,
                new LocationListener() {
                    @Override
                    public void onLocationChanged(Location location) {
                        callback.onNewLocationAvailable(location);
                    }

                    @Override
                    public void onStatusChanged(String provider,
                            int status, Bundle extras) {
                    }

                    @Override
                    public void onProviderEnabled(String provider) {
                    }

                    @Override
                    public void onProviderDisabled(String provider) {
                    }
                }, null);}  

and my permission are follows.

 <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <!-- Network State Permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />\
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission     android:name="android.permission.ACCESS_COARSE_LOCATION"/>

Thank you:)

sijo jose
  • 110
  • 8

2 Answers2

2

Check Whether WiFi is enabled or not:-

WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled()){
//wifi is enabled
}
2

ConnectivityManager

Class that answers queries about the state of network connectivity. It also notifies applications when network connectivity changes. Get an instance of this class by calling Context.getSystemService(Context.CONNECTIVITY_SERVICE).

TYPE_WIFI

The WIFI data connection. When active, all data traffic will use this network type's interface by default (it has a default route).

You can use below Logic

ConnectivityManager connManagerObj = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo WifiObj = connManagerObj.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (WifiObj.isConnected()) {
    //Add your Code
}

Add this in your manifest file .

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
IntelliJ Amiya
  • 70,230
  • 14
  • 154
  • 181