2015-06-03 16 views

回答

0

如果您使用的是WebView,則問題是它不支持彈出窗口,它們是身份驗證流程所需的。通過實現https://stackoverflow.com/a/8022295的彈出支持來實現它的工作。

private void setUpWebView() { 
    webView = new WebView(getContext()); 
    webView.setWebChromeClient(new MyChromeClient()); 
    final WebSettings webSettings = webView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
    webSettings.setSupportMultipleWindows(true); 
    webView.loadUrl(url); 
} 

...

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.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); 
    } 
}