我目前正在使用webview显示本地html内容,但此内容可能引用在线图像。我需要的是防止用户在3g/4g上下载这些在线数据,我只想让webview只在wifi上上网。
我没找到办法…有可能吗?
最佳答案
要处理要加载和不加载的URL,请执行以下操作:
“将web view client与web视图一起使用,并重写此方法shouldroverrideurlloading,在该方法中,如果不是使用不同状态和if条件的本地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;
}
关于android - Android Webview对数据的互联网访问限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18202472/