2016-10-14 66 views
1


我有一個場景,我需要在網頁中顯示一個網址。
該網址包含一個不顯示的彈出窗口,而是顯示一個空白屏幕而不是彈出窗口。
PLZ在下面找到我的實現:
WebView不顯示彈出

 webView = (WebView) instamedWebView.findViewById(R.id.webView);<br> 
    WebSettings settings = webView.getSettings(); 
    settings.setBuiltInZoomControls(true); 
    settings.setUseWideViewPort(true); 
    settings.setJavaScriptEnabled(true); 
    settings.setSupportMultipleWindows(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(true); 
    settings.setLoadsImagesAutomatically(true); 
    settings.setDomStorageEnabled(true); 
    settings.setLoadWithOverviewMode(true); 
    settings.setAllowFileAccess(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(true); 

try { 
    String url = "https://ppay-dev.com/Payment/abc.aspx"; 
    String postData = String postData = "amount=" + URLEncoder.encode(userName, "UTF-8") + "&FirstName=" + URLEncoder.encode(password, "UTF-8"); 
     webView.setWebViewClient(new WebViewClient() { 
      public void onPageFinished(WebView view, String url) { 

      } 

      @Override 
      public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 


      } 
     }); 
     webView.postUrl(url,postData.getBytes()); 
     webView.setWebChromeClient(new WebChromeClient(){ 
      @Override 
      public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 
       return super.onJsAlert(view, url, message, result); 
      } 
     }); 
    catch (Exception e){ 
     e.printStackTrace(); 
    } 


任何人都可以建議我如何在Android的WebView中顯示彈出窗口

+0

你看到彈出時,你從你的手機的默認瀏覽器訪問該網站,或者只是當您從您的電腦訪問它? – TDG

+0

可以顯示彈出窗口的屏幕截圖嗎?它是模態還是警報? – ZeroOne

+0

彈出窗口如何渲染? – rds

回答

1

也許你可以嘗試重寫網頁警惕本地警報。這個對我有用。

webview.setWebChromeClient(new WebChromeClient() { 
      @Override 
      public void onReceivedTitle(WebView view, String title) { 
       super.onReceivedTitle(view, title); 
       Log.i("TITLE", title); 
      } 

      @Override 
      public void onProgressChanged(WebView view, int newProgress) { 
       super.onProgressChanged(view, newProgress); 
      } 

      // OVERRIDE WEB CONFIRM ALERT TO NATIVE ALERT 
      @Override 
      public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { 
       new AlertDialog.Builder(VideoTutorial.this) 
         .setTitle("DOMINOS SAYS:") 
         .setMessage(message) 
         .setPositiveButton(android.R.string.ok, (dialog, which) -> result.confirm()) 
         .setNegativeButton(android.R.string.cancel, (dialog, which) -> result.cancel()) 
         .create().show(); 

       return true; 
      } 

      // OVERRIDE WEB ALERT TO NATIVE ALERT 
      @Override 
      public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { 

       new AlertDialog.Builder(VideoTutorial.this) 
          .setTitle("DOMINOS SAYS:") 
          .setMessage(message) 
          .setPositiveButton(android.R.string.ok, 
            (dialog, which) -> result.confirm()) 
          .create().show(); 
       return true; 
      } 

      // OVERRIDE WEB PROMPT ALERT TO NATIVE ALERT PROMPT 
      @Override 
      public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) { 
       new MaterialDialog.Builder(VideoTutorial.this) 
         .title("DOMINOS SAYS:") 
         .content(message) 
         .inputType(InputType.TYPE_CLASS_TEXT) 
         .inputRangeRes(2, 20, R.color.dominoRed) 
         .input("No 1 Pizza Fav", "", (dialog, input) -> result.confirm(input + "")) 
         .positiveText("OK") 
         .negativeText("CANCEL") 
         .onNegative((dialog, which) -> result.cancel()) 
         .show(); 

       return true; 
      } 
     }); 
0

據說使用WebChromeClient和覆蓋方法onJsAlert()。這是一個示例代碼。

WebView wv=new WebView(this); 
wv.setWebChromeClient(new WebChromeClient() { 
    @Override 
    public boolean onJsAlert(WebView view, String url, String message,JsResult result) { 
       //Required functionality here 
       return super.onJsAlert(view, url, message, result); 
     } 

這是link欲瞭解更多信息。

0

而不是覆蓋onJsAlert,只需使用:

WebView wv = new WebView(this); 
wv.setWebChromeClient(new WebChromeClient());