2016-10-14 50 views
1


WebページにURLを表示する必要があるシナリオがありました。
URLには表示されないポップアップが含まれており、ポップアップの代わりに空の画面が表示されます。
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(); 
    } 


は、誰もが

+0

を、あなたの携帯電話のデフォルトブラウザからそのサイトにアクセスするときには、ポップアップを参照するか、あなたのPCからアクセスするときだけですか? – TDG

+0

ポップアップのスクリーンショットを表示できますか?それはモーダルですか、アラートですか? – ZeroOne

+0

ポップアップはどのように表示されますか? – rds

答えて

1

たぶん、あなたはネイティブアラートにウェブアラートを上書きしようとすることができますAndroidのWebViewの中にポップアップを表示する方法を私はお勧めできます。わたしにはできる。

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()); 
関連する問題