Как проверить, доступен ли LocationManager.NETWORK_PROVIDER? - PullRequest
4 голосов
/ 06 октября 2011

Как проверить, доступен ли LocationManager.NETWORK_PROVIDER?

Я включил AndroidManifest.xml, но мне нужно проверить это в коде и, если он недоступен, использовать GPS_PROVIDER.Кто-нибудь может мне помочь?

Ответы [ 3 ]

29 голосов
/ 06 октября 2011

Как проверить, доступен ли LocationManager.NETWORK_PROVIDER?

Используйте эту часть, чтобы проверить, включен ли сетевой провайдер:

network_enabled=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

Это вернет логические значения:

true - если включено.

false - не включено.

дополнительно для проверки, включен ли поставщик GPS:

gps_enabled=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

Возвращает логические значения:

true - если включено.

false - не включено.

Если вы хотите, чтобы пользователь включил сеть или провайдера GPS, используйте этот код для перенаправления пользователя на страницу настроек:

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
3 голосов
/ 17 февраля 2012

потому что здесь всегда немного странно ; =)

я написал собственный фрагмент кода , чтобы проверить доступность сетевого провайдера :

поместите это в ваш метод 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();
    }

}

повеселиться, надеюсь, это кому-нибудь поможет :) искал именно этот кусок кода: =)

ура :)) 1022 *

2 голосов
/ 06 октября 2011

здесь приведен код для получения местоположения с использованием сетевого провайдера и / или поставщика 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, если также получает местоположение с помощью сетиЗатем провайдер проверит время, которое было быстрым, что объект местоположения вернет

, если один из провайдеров включен, то этот объект местоположения вернет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...