我在
android web视图中包含了一个web应用程序,并且在网页上有一个链接打开了其他一些网站,当点击链接时,第一次点击就可以正常工作,但是当第二次点击时没有找到网站,
代码是:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("some site ")) {
Intent i = new
Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
return true;
} else {
view.loadUrl(url);
return false;
}
}
@THelper和@mikegr,谢谢你的回复,
实际上在我的情况下我在我的网络应用程序中有一个模式面板(JSF),其中包含一些按钮,点击按钮我打开一些其他网站使用javascript window.open()方法在桌面浏览器中正常工作,但是,当我在web webview中包装这个web应用程序,一切正常,除非我第一次单击此按钮我可以使用外部浏览器打开其他站点,但是在第二次单击时webview尝试在webview中打开此otherite而不是外部浏览器,我得到的网站没有找到其他网站的整个网址,即使我注销并再次登录,因为启动的应用程序仍在运行,这种情况会发生.
在我的情况下,当应用程序空闲时,我得到黑屏.
我浏览网络并发现了simillar问题,但这也没有帮助,这里是链接:
http://groups.google.com/group/android-for-beginners/browse_thread/thread/42431dd1ca4a9d98
任何帮助和想法对我都非常有帮助,这对我来说太长了
因为我试图在Web视图中显示我的Web应用程序,所以我只有一个活动,其中包含这样的代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// so that when launcher is clicked while the application is
// running , the application doesn't start from the begnining
} else {
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
// Show the ProgressDialog on this thread
this.progressDialog = ProgressDialog.show(this, "Pleas Wait..", "Loading", true);
browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setJavaScriptEnabled(true);
browser.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
Log.i(TAG, "Finished loading URL: " +url);
if (progressDialog.isShowing()) {
progressDialog .dismiss();
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("some site")) {
Intent i = new
Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
return true;
} else {
view.loadUrl(url);
return true;
}
}
});
browser.loadUrl("mysite");
}
}
最佳答案 我有过在某些情况下不调用shouldOverrideUrlLoading()的经验.
有关此主题的一些错误
http://code.google.com/p/android/issues
像错误编号15827,9122,812,2887
作为一种解决方法,尝试添加方法onPageStarted()并检查是否接到此调用.对我来说,即使之前未调用shouldOverrideUrlLoading(),也始终会调用此方法.