我正在使用Android和Phonegap,此刻我遇到了一件简单的事情。我需要将一个webViewClient设置为PhoneGap webView,以便捕获完成的页面的URL并使用它。Android Phonegap - 尝试设置WebViewClient时发生TIMEOUT错误
这是代码:
public class PhoneGapTest extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setBooleanProperty("loadInWebView", true);
super.clearCache();
super.keepRunning = false;
super.loadUrl("file:///android_asset/www/index.html");
super.appView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap bitmap) {
Log.i("TEST", "onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.i("TEST", "onPageFinished: " + url);
}
});
}
代码不似乎工作,页面不载入,我得到一个超时错误,但如果我删除“setWebViewClient”的部分页面加载完美。
我看到有一个类CordovaWebViewClient,我必须使用它而不是WebViewClient吗?我在网络上发现了这种方式:
this.appView.setWebViewClient(new CordovaWebViewClient(this){
@Override
public boolean shouldOverrideUrlLoading(final WebView view, String url) {
Log.i("BugTest", "shouldOverrideUrlLoading: " + url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap bitmap) {
Log.i("TEST", "onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.i("TEST", "onPageFinished: " + url);
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload){
}
});
但是,该代码也不工作,我仍然有一个超时错误。 我也看到,已经有一个webVieClient成员,但我不,如果我必须使用它和如何。
我与PhoneGap的版本1.9.0工作
感谢您阅读
答西蒙:
它的工作就这样,谢谢!
public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
super.appView.clearCache(true);
super.appView.clearHistory();
this.appView.setWebViewClient(new CustomCordovaWebViewClient(this));
super.loadUrl("file:///android_asset/www/index.html");
}
public class CustomCordovaWebViewClient extends CordovaWebViewClient {
public CustomCordovaWebViewClient(DroidGap ctx) {
super(ctx);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap bitmap) {
super.onPageStarted(view, url, bitmap);
Log.i("TEST", "onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.i("TEST", "onPageFinished: " + url);
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload){
super.doUpdateVisitedHistory(view, url, isReload);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
}
谢谢您的回答西蒙,我这样做,但它不起作用,我用代码实现了你所说的更新了第一篇文章,那是你说的吗? – Spike777
它最终调用了“super.onPageFinished(view,url);”在onPageFinished方法...谢谢! – Spike777
哦,我只是觉得它只适用于版本1.8.1,在1.9.0它不起作用:它调用super.onPageStarted时发生错误(...) – Spike777