webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { WebView newWebView = new WebView(getContext()); addView(newWebView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); return true; } });
mContainer.addView(mWebviewPop); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(mWebviewPop); resultMsg.sendToTarget();
private class MyWebChromeclient extends WebChromeClient { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView newWebView = new WebView(WebViewActivity2.this); view.addView(newWebView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); newWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Intent browserIntent = new Intent(Intent.ACTION_VIEW); browserIntent.setData(Uri.parse(url)); startActivity(browserIntent); return true; } }); return true; }
@Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { wvMain.setVisibility(View.GONE); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); WebView wvNew = new WebView(mContext); wvNew.setVerticalScrollBarEnabled(false); wvNew.setHorizontalScrollBarEnabled(false); wvNew.setWebViewClient(new UriWebViewClient()); WebSettings webSettings = wvNew.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setAppCacheEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webSettings.setSupportMultipleWindows(true); wvNew.setLayoutParams(new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); mContainer.addView(wvNew); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(wvNew); resultMsg.sendToTarget(); return true; }
@Override public boolean onCreateWindow (WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView targetWebView = new WebView(view.getContext()); targetWebView.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { //simple url matching if (url.contains("youtube.com") == true) { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); view.getContex().startActivity(i); } view.stopLoading(); } }); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(targetWebView); resultMsg.sendToTarget(); return true; }
webView.getSettings().setSupportMultipleWindows(true); webView.setWebChromeClient(new WebChromeClient { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { // Create a WebView WebView popupWebView = new WebView(view.getContext()); // TODO: Put WebView into your view hierarchy, if needed. // // This is needed to open the url in the WebView. // Without the client, WebView will try to start a browser. popupWebView.setWebViewClient(new WebViewClient()); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(popupWebView); resultMsg.sendToTarget(); return true; } });
class ChromeClient extends WebChromeClient { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView tempWebView = new WebView(MainActivity.this); tempWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); browserIntent.addCategory(Intent.CATEGORY_BROWSABLE); startActivity(browserIntent); return true; } }); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(tempWebView); resultMsg.sendToTarget(); return true; } }
@Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView newWebView = new WebView(view.getContext()); WebViewTransport transport = (WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); newWebView.setWebViewClient(new WebViewClient() { @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Intent browserIntent = new Intent(Intent.ACTION_VIEW); browserIntent.setData(Uri.parse(url)); view.getContext().startActivity(browserIntent); return true; } }); return true; }
@Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { Logger.d(Constants.TAG, "onCreateWindow"+resultMsg); WebView targetWebView = new WebView(getActivity()); // pass a context targetWebView.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { handleWebViewLinks(url); // you can get your target url here super.onPageStarted(view, url, favicon); } }); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(targetWebView); resultMsg.sendToTarget(); return true; }
mWebView.setWebChromeClient(new WebChromeListener() { @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { WebView newWebView = new WebView(view.getContext()); newWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(browserIntent); return true; } }); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); return true; } });
@Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { if (secondaryWebView != null) webViewPlaceHolder.removeView(secondaryWebView); secondaryWebView = new WebView(getActivity()); secondaryWebView.getSettings().setJavaScriptEnabled(true); secondaryWebView.setWebChromeClient(this); secondaryWebView.setWebViewClient(new WebViewClient()); secondaryWebView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.FILL_PARENT)); webViewPlaceHolder.addView(secondaryWebView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(secondaryWebView); resultMsg.sendToTarget(); return true; }
@Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg) { contentContainer.removeAllViews(); WebView childView = new WebView(mContext); childView.getSettings().setJavaScriptEnabled(true); childView.setWebChromeClient(this); childView.setWebViewClient(new WebViewClient()); childView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); contentContainer.addView(childView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(childView); resultMsg.sendToTarget(); return true; }
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; // Create a new WebView here and display it to the user newWebView = ... transport.setWebView(newWebView); resultMsg.sendToTarget(); return true;
@Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { if (proClient !=null) { WebViewTransport transport = (WebViewTransport) resultMsg.obj; ProWebView webView = new ProWebView(getContext()); transport.setWebView(webView); resultMsg.sendToTarget(); proClient.onWindowStateChanged(webView, true); return true; } return false; }
@Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(view); resultMsg.sendToTarget(); return true; } //=========多窗口的问题==========================================================
@Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { ViewAdapter newView = wdView.create(); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView((WebView) newView.getUnderlyingView()); resultMsg.sendToTarget(); wdChromeClient.onCreateWindow(newView); return delegate.onCreateWindow(view, dialog, userGesture, resultMsg); }
final WebView.WebViewTransport transport = (WebView.WebViewTransport) msg.obj; if(transport!=null){ transport.setWebView(mCustomWebView); } msg.sendToTarget();
@Test public void onCreateWindow_pushesNewWebView() { WebView.WebViewTransport webViewTransport = mock(WebView.WebViewTransport.class); Message message = mock(Message.class); message.obj = webViewTransport; boolean result = mThreeDSecureWebChromeClient.onCreateWindow(null, false, false, message); assertTrue(result); verify(mActivity).pushNewWebView(any(ThreeDSecureWebView.class)); verify(webViewTransport).setWebView(any(ThreeDSecureWebView.class)); verify(message).sendToTarget(); }
@Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { ThreeDSecureWebView newWebView = new ThreeDSecureWebView(mActivity.getApplicationContext()); newWebView.init(mActivity); mActivity.pushNewWebView(newWebView); ((WebView.WebViewTransport) resultMsg.obj).setWebView(newWebView); resultMsg.sendToTarget(); return true; }
final class MyChromeClient extends WebChromeClient { // Add new webview in same window @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { WebView childView = new WebView(getContext()); childView.getSettings().setJavaScriptEnabled(true); childView.setWebChromeClient(this); childView.setWebViewClient(new FacebookWebViewClient()); childView.setLayoutParams(FILL); mContent.addView(childView); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(childView); resultMsg.sendToTarget(); return true; } // remove new added webview whenever onCloseWindow gets called for new webview. @Override public void onCloseWindow(WebView window) { mContent.removeViewAt(mContent.getChildCount() - 1); } }