如何在android中脱机加载webview
好的,我有一个webview,它在网页在线时加载网页(例如google.com),但当它离线时,它说网页无法加载。。 我想显示手机连接互联网时的最后一个网页 我是新来的,所以你可以给我一个java类,这样我就可以复制/粘贴了 我的源代码如何在android中脱机加载webview,android,webview,offline-caching,Android,Webview,Offline Caching,好的,我有一个webview,它在网页在线时加载网页(例如google.com),但当它离线时,它说网页无法加载。。 我想显示手机连接互联网时的最后一个网页 我是新来的,所以你可以给我一个java类,这样我就可以复制/粘贴了 我的源代码 public class tab1 extends Fragment { WebView webView ; ProgressBar progressBar; public View onCreateView(LayoutInflater inflate
public class tab1 extends Fragment {
WebView webView ;
ProgressBar progressBar;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.tab1,container,false);
webView = (WebView) view.findViewById(R.id.webview2);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
// Set cache size to 8 mb by default. should be more than enough
webView.getSettings().setAppCacheMaxSize(1024*1024*8);
// This next one is crazy. It's the DEFAULT location for your app's cache
// But it didn't work for me without this line.
// UPDATE: no hardcoded path. Thanks to Kevin Hawkins
// String appCachePath = this.getCacheDir().getAbsolutePath();
// Log.e(TAG, "appCachePath = " + appCachePath);
// webView.getSettings().setAppCachePath(appCachePath);
progressBar = (ProgressBar)view.findViewById(R.id.progressBar2);
webView.setWebViewClient(new myWebClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.loadUrl("http://google.com");
return view;
}
public class myWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
progressBar.setVisibility(View.GONE);
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
}
}
}
如果网络脱机,则必须从缓存加载:- 1.首先在清单中添加这些权限-
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
hello@Noorudheen我添加了代码,但是说无法解析方法
isNetworkAvailable()
请参见isNetworkAvailable()-我的意思是您必须在此处检查网络状态。请参阅我的编辑以执行此操作。
if ( !isNetworkAvailable() ) { // loading offline
webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
}
//just add this statement before you calls load.
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}