我目前正在使用 webview 来显示本地 HTML 内容,但该内容可能指的是在线图像。我需要的是防止在用户使用 3G/4G 时下载此在线数据。我只希望 webview 只能通过 Wifi 访问互联网。我没有找到任何方法来做到这一点......这可能吗?
问问题
360 次
1 回答
1
处理要加载的 url 和不加载的 url:-
“将 WebView 客户端与您的 Web 视图一起使用并覆盖此方法 shouldOverrideUrlLoading 并且如果它不是使用不同状态的本地 url 之一并且如果条件基于您在该方法中的要求,则不要调用任何 url”
要决定它是在 wi-fi 上还是 3G/4G 上:- 使用下面的代码,您可以检测手机是否通过 wifi 或数据连接,并可以做出相应的行为:
public static boolean isDataEnabled(Context context)
{
return (isMobileDataEnabled(context) || isWifiEnabled(context));
}
public static boolean isMobileDataEnabled(Context context)
{
if(context == null)
return false;
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = null;
if (connectivityManager != null) {
networkInfo =
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
}
return networkInfo == null ? false : networkInfo.isConnected();
}
public static boolean isWifiEnabled(Context context)
{
if(context == null)
return false;
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = null;
if (connectivityManager != null) {
networkInfo =
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
}
return networkInfo == null ? false : networkInfo.isConnected();
}
//Chceking user preference:
public static boolean shouldUseOnlineServices(Context context)
{
if(context == null || isDataEnabled(context) == false)
return false;
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
if(pref != null)
{
//String wifi = pref.getString("pref_camera_when_to_use_online_services","1");
//boolean onlyOnWifi = (wifi.equals("0")== true) ? false:true;
boolean onlyOnWifi = pref.getBoolean("pref_radio_wifi", false);
if(onlyOnWifi == false)
return true;
if(isWifiEnabled(context) == true)
return true;
else
return false;
}
if(isWifiEnabled(context) == true)
return true;
else
return false;
}
于 2013-08-13T06:56:28.057 回答