Любой альтернативный способ проверить, включен ли поставщик сетевых расположений? - PullRequest
5 голосов
/ 02 ноября 2011

Когда я проверяю

boolean networkReady=manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

Я получаю правду на некоторых телефонах Samsung, даже если в настройках не указано местоположение беспроводной сети.

Есть ли другой способ проверить эту настройку и получить правильное значение на всех телефонах?

Ответы [ 3 ]

7 голосов
/ 07 ноября 2011

Прилагаемые ниже некоторые полезные функции сетевого утилиты, которые я использовал в своих приложениях, все работает как шарм! а для опроса местоположения обязательно -> https://github.com/commonsguy/cwac-locpoll

надеюсь, это поможет ...

public static boolean checkInternetConnection(Context context) {

    ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    // ARE WE CONNECTED TO THE NET?
    if (conMgr.getActiveNetworkInfo() != null
            && conMgr.getActiveNetworkInfo().isAvailable()
            && conMgr.getActiveNetworkInfo().isConnected()) {
        return true;
    } else {
        Log.w(TAG, "Internet Connection NOT Present");
        return false;
    }
}
    public static boolean isConnAvailAndNotRoaming(Context context) {

    ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (conMgr.getActiveNetworkInfo() != null
            && conMgr.getActiveNetworkInfo().isAvailable()
            && conMgr.getActiveNetworkInfo().isConnected()) {

        if(!conMgr.getActiveNetworkInfo().isRoaming())
            return true;
        else
            return false;
    } else {
        Log.w(TAG, "Internet Connection NOT Present");
        return false;
    }
}
    public static boolean isRoaming(Context context) {

    ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    return (conMgr.getActiveNetworkInfo()!=null && conMgr.getActiveNetworkInfo().isRoaming());
}
3 голосов
/ 11 ноября 2011

Вы также можете попробовать вот так:

public boolean isDataConnectionAvailable(Context context){
        ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = connectivityManager.getActiveNetworkInfo();
        if(info == null)
            return false;

        return connectivityManager.getActiveNetworkInfo().isConnected();
}

public boolean isGpsEnabled(LocationManager manager){
        if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
            return false;
        }
        return true;
}

public boolean isLocationByNetworkEnabled(LocationManager manager){
        if ( !manager.isProviderEnabled( LocationManager.NETWORK_PROVIDER ) ) {
            return false;
        }
        return true;
}
0 голосов
/ 07 ноября 2011

Поставщик в списке возвращается getProviders (true); также?Возможно, это устройство считает, что поставщик сетевых расположений должен всегда иметь возможность предоставить PASSIVE_PROVIDER?Кажется сломанным для меня.На каких устройствах Samsung вы видите такое поведение?

...