0

我的应用程序使用来自 Google API 2.0 的 MapView。移动数据的使用是一个问题,所以我想限制谷歌地图只使用 Wifi。当我阻止所有网络连接时,我会看到缓存的地图数据,这是大多数情况下我所需要的。

但我也有一些我想在移动数据上运行的后台任务。

所以我必须完成的是使用仅限 Wifi 模式的谷歌地图,而不会对应用程序的其余部分(当然还有其他应用程序)施加任何网络限制。

如果我可以将 MapView 置于“离线”模式,我想我可以让它工作,防止它使用所有网络。我可以根据 wifi 可用性打开和关闭它。

4

1 回答 1

0

将以下类添加到您的代码中。

public class NetworkState {

    public static int TYPE_WIFI = 1;
    public static int TYPE_MOBILE = 2;
    public static int TYPE_NOT_CONNECTED = 0;


    public static int getConnectivityStatus(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        if (null != activeNetwork) {
            if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
                return TYPE_WIFI;

            if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
                return TYPE_MOBILE;
        }
        return TYPE_NOT_CONNECTED;
    }
}

在 MapClass.java 里面

if(NetworkState.getConnectivityStatus(context) != 2)
    mapMethod();
于 2016-03-13T12:54:26.850 回答