【发布时间】:2017-12-15 12:14:58
【问题描述】:
我正在 Android Studio 中构建一个在 webview 中显示页面的应用程序,但我似乎无法让 webview 在同一个 webview 中打开 target='_blank' 的页面。 这个可以吗?
目前我有这个。因为现在当我单击带有 target='_blank' 的链接时没有任何反应 如果我更改我的 onCreateWindow,链接会在外部浏览器中打开,但我不希望发生这种情况。
我试过谷歌搜索,但找不到解决方案。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView) findViewById(R.id.myWebView);
myWebView.loadUrl("http://test.dk");
myWebView.setWebViewClient(new MyWebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setSupportMultipleWindows(true);
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg)
{
WebView.HitTestResult result = view.getHitTestResult();
String data = result.getExtra();
//Context context = view.getContext();
//Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data));
//context.startActivity(browserIntent); // opens in external browser
myWebView.loadUrl(data); //don't work!
return false;
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (myWebView.canGoBack()) {
myWebView.goBack();
} else {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
// Use When the user clicks a link from a web page in your WebView
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
【问题讨论】:
-
shouldOverrideUrlLoading 方法将返回类型更改为 true;
-
如果我将 shouldOverrideUrlLoading 更改为 true,我只会得到一个白页.. 没有加载
标签: android html webview android-webview