Как включить Network Provider в Android?

когда я отлаживаю свой код с помощью устройства (sony Xperia) для получения широты и долготы с помощью WIFI, показываю ложный статус для сетевого провайдера. Соединение WIFI включено, и все необходимые разрешения я добавил в файл mainfeast.xml.

это показывает мне нуль для этого метода.

NetworkProvider=locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

И показывать нулевое значение для местоположения, когда сетевой провайдер включен.

locationmanager.getLastKnownLocation(LocationManager.NETWORK_Provider);

я добавил эти разрешения.

 <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_GPS"/>
 <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
 <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"/>
 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission  android:name="android.permission.CHANGE_WIFI_STATE"/>
 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

Как я могу исправить эту проблему.

Мой код

protected void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button) findViewById(R.id.button1);
context=getApplicationContext();
button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) 
    {
    status12=checkStatus();
    if(status12)
    {
        addListenerAction();
    }
    }
});
}

public boolean checkStatus()
{
locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
provider1=locationManager.getProviders(true);
for(String s : provider1)
{
    if(s.equals(LocationManager.GPS_PROVIDER))
    {
    gpsStatus=locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    if(gpsStatus)
    {
        status=true;
    }
    }
    if(s.equals(LocationManager.NETWORK_PROVIDER))
    {
    NetworkProvider=locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    if(NetworkProvider)
    {
        status=true;
    }
    }
    if(s.equals(LocationManager.PASSIVE_PROVIDER))
    {
    PassiveProvider=locationManager.isProviderEnabled(LocationManager.PASSIVE_PROVIDER);

    if(PassiveProvider)
    {
        status=true;
    }
    }
}
return status;
}

private class Abcd implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
    if(loc !=null)
    {
    if(gpsStatus)
    {

        latitude=loc.getLatitude();
        longitude=loc.getLongitude();
        System.out.println("Longitude ="+longitude);
        System.out.println("Latitude ="+latitude);

        try
        {
        geocoder = new Geocoder(context,Locale.getDefault());
        System.out.println("GeoCoder ="+geocoder);
        address=geocoder.getFromLocation(latitude,longitude, 1);
        System.out.println("Address ="+address);
        if(!address.isEmpty())
        {
            Cityname=address.get(0).getLocality();
            country = address.get(0).getCountryName();
            Address=address.get(0).getAddressLine(0);
            System.out.println("Country Name ="+country);
            System.out.println("CityName ="+Cityname);
            System.out.println("Address ="+Address);
            ShowLocation sw=new ShowLocation();

        }
        }
        catch (IOException e) {

        e.printStackTrace();
        }
    }
    if(NetworkProvider)
    {
        latitude=loc.getLatitude();
        longitude=loc.getLongitude();
        System.out.println("Longitude ="+longitude);
        System.out.println("Latitude ="+latitude);

        try
        {
        geocoder = new Geocoder(context,Locale.getDefault());
        System.out.println("GeoCoder ="+geocoder);
        address=geocoder.getFromLocation(latitude,longitude, 1);
        System.out.println("Address ="+address);
        if(!address.isEmpty())
        {
            Cityname=address.get(0).getLocality();
            country = address.get(0).getCountryName();
            Address=address.get(0).getAddressLine(0);
            System.out.println("Country Name ="+country);
            System.out.println("CityName ="+Cityname);
            System.out.println("Address ="+Address);
            ShowLocation sw=new ShowLocation();

        }
        }
        catch (IOException e) {

        e.printStackTrace();
        }
    }
    if(PassiveProvider)
    {
        latitude=loc.getLatitude();
        longitude=loc.getLongitude();
        System.out.println("Longitude ="+longitude);
        System.out.println("Latitude ="+latitude);

        try
        {
        geocoder = new Geocoder(context,Locale.getDefault());
        System.out.println("GeoCoder ="+geocoder);
        address=geocoder.getFromLocation(latitude,longitude, 1);
        System.out.println("Address ="+address);
        if(!address.isEmpty())
        {
            Cityname=address.get(0).getLocality();
            country = address.get(0).getCountryName();
            Address=address.get(0).getAddressLine(0);
            System.out.println("Country Name ="+country);
            System.out.println("CityName ="+Cityname);
            System.out.println("Address ="+Address);
            ShowLocation sw=new ShowLocation();

        }
        }
        catch (IOException e) {

        e.printStackTrace();
        }
    }


    }
}
@Override   
public void onProviderDisabled(String provider) {
}

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

public void addListenerAction()
{
locationListener=new Abcd(); 
if(gpsStatus)
{
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,time,distance, locationListener);
    Criteria criteria=new Criteria();
    provider=locationManager.getBestProvider(criteria, true);
    location=locationManager.getLastKnownLocation(provider);
    System.out.println("Location ="+location);
    locationListener.onLocationChanged(location);
}
if(NetworkProvider)
{
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,time,distance, locationListener);
    Criteria criteria=new Criteria();
    provider=locationManager.getBestProvider(criteria, true);
    location=locationManager.getLastKnownLocation(provider);
    locationListener.onLocationChanged(location);
}
if(PassiveProvider)
{
    locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER,time,distance, locationListener);
    Criteria criteria=new Criteria();
    provider=locationManager.getBestProvider(criteria, true);
    location=locationManager.getLastKnownLocation(provider);
    locationListener.onLocationChanged(location);
}
}

person user3509581    schedule 26.04.2014    source источник
comment
я получаю значение от провайдера Gps, но хочу получить доступ через пассивного или сетевого провайдера.   -  person user3509581    schedule 26.04.2014
comment
вы инициализировали locationmanager?   -  person shweta_jain    schedule 26.04.2014
comment
я инициализировал с помощью метода setSystemServices(Context.LOCATION_SERVICE)   -  person user3509581    schedule 26.04.2014
comment
когда я запускаю свой код с помощью GPS, он предоставляет мне долготу и широту, но когда я включаю Wi-Fi устройства, он предоставляет мне только пассивного провайдера.   -  person user3509581    schedule 26.04.2014
comment
а пассивный провайдер не разрешает локацию   -  person user3509581    schedule 26.04.2014
comment
почему я не могу понять   -  person user3509581    schedule 26.04.2014
comment
потому что мой пассивный провайдер включен в deviced   -  person user3509581    schedule 26.04.2014
comment
и статус моего сетевого провайдера всегда ложный, но мой WIfi моего устройства включен   -  person user3509581    schedule 26.04.2014
comment
locationManager = (LocationManager) getSystemService(mContext.LOCATION_SERVICE); используйте этот код для инициализации менеджера местоположения   -  person shweta_jain    schedule 26.04.2014
comment
я уже использовал этот метод   -  person user3509581    schedule 26.04.2014
comment
Вы можете опубликовать свой полный фрагмент кода?   -  person shweta_jain    schedule 26.04.2014
comment
показать я буду редактировать код   -  person user3509581    schedule 26.04.2014
comment
Хорошо, пожалуйста, отредактируйте свой код   -  person shweta_jain    schedule 26.04.2014
comment
я добавил свой код с этим вопросом   -  person user3509581    schedule 26.04.2014
comment
я проверил ваш код для меня, он работает нормально. на моем устройстве все статусы провайдера сбываются   -  person shweta_jain    schedule 26.04.2014
comment
для сетевого провайдера это правда   -  person user3509581    schedule 26.04.2014
comment
и для пассивного провайдера работает   -  person user3509581    schedule 26.04.2014
comment
я получаю статус всех провайдеров true   -  person shweta_jain    schedule 26.04.2014
comment
Мисс Света, скажи мне еще кое-что, пожалуйста.   -  person user3509581    schedule 26.04.2014
comment
и я также проверяю этот код после отключения Wi-Fi   -  person shweta_jain    schedule 26.04.2014
comment
давайте продолжим это обсуждение в чате   -  person shweta_jain    schedule 26.04.2014


Ответы (1)


используйте этот код для инициализации менеджера местоположения

locationManager = (LocationManager) getSystemService(mContext.LOCATION_SERVICE); 
person shweta_jain    schedule 26.04.2014