检查网络位置提供程序是否已启用的任何其他方法?

时间:2011-11-02 18:00:29

标签: java android location

当我检查时

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

我在某些三星手机上都是如此,尽管在设置中不允许使用无线位置。

有没有其他方法可以检查此设置并在所有手机上获得正确的值?

3 个答案:

答案 0 :(得分:7)

在我的应用程序中使用的一些不错的网络工具函数下面,所有的工作就像一个魅力! 并且对于位置轮询,肯定 - > 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());
}

答案 1 :(得分:3)

你也可以尝试这样:

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

答案 2 :(得分:0)

列表中的提供程序是否也由getProviders(true);返回?也许该设备认为应始终启用网络位置提供程序以提供PASSIVE_PROVIDER?似乎打破了我。您认为哪种三星设备出现此行为?