Webview 无法加载离线缓存数据。

5

我在Webview中遇到了问题,它无法使用缓存。我启动我的应用程序,加载HTML5页面,然后退出页面,在手机上进入飞行模式,然后尝试再次访问网页。它应该被缓存,但我收到一条消息,说无法检索URL。

这是与此相关的代码。我做错了什么吗?

String weblink = "http://abcd.com";
final ConnectivityManager conMgr =  (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);

final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();

if (activeNetwork != null && activeNetwork.isConnected()) {
    progressBar = ProgressDialog.show(this, "Please Wait", "loading online..");
    mWebview.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
    mWebview.getSettings().setAppCacheMaxSize(1024*1024*8);
    mWebview.loadUrl(weblink);
    setContentView(mWebview);
} 
else 
{
    progressBar = ProgressDialog.show(this, "Please Wait", "loading offline..");
    mWebview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);

    mWebview.loadUrl(weblink);
    setContentView(mWebview);
}

嗨,你解决了这个问题吗?我有完全相同的问题。如果你有解决方案,能分享一下吗?谢谢Matt。这是我的重复问题:https://dev59.com/QG3Xa4cB1Zd3GeqPh7ps - turtleboy
2个回答

1
你的代码没问题。
要么网站不存在或没有正确缓存,要么你忘记添加以下权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permisson.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

你是否为你的webview启用了缓存?http://alex.tapmania.org/2010/11/html5-cache-android-webview.html - Zakaria
好的,让我试试!谢谢您的快速回复 :) - sudhakar singh
如果您将 WebSettings.LOAD_CACHE_ONLY 替换为 WebSettings.LOAD_CACHE_ELSE_NETWORK,会发生什么? - Zakaria
使用ARO工具来了解手机在网络方面的操作可能是值得的。这可以帮助您了解正在发生什么以及获取了哪些数据。http://developer.att.com/developer/legalAgreementPage.jsp?passedItemId=9700312 - Rod Burns
你是否正在使用Android与其他框架(例如:PhoneGap,Appcelerator等)? - Zakaria
显示剩余9条评论

0
Just Remove 

setContentView(mWebview);
设置内容视图为mWebview。
in 
if and else both parts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接