WebView blocking pop up windows?

22,630

If i am getting right , you need to use JavaScriptInterface for calling JavaScript function from Android.

Check this link which may help you :

http://www.codeproject.com/Articles/392603/Android-addJavaScriptInterface

Or check some websettings : http://developer.android.com/reference/android/webkit/WebSettings.html#setSupportMultipleWindows%28boolean

try to put this code in onCreate()

        webView.getSettings().setPluginsEnabled(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
Share:
22,630
user1570222
Author by

user1570222

Updated on September 02, 2020

Comments

  • user1570222
    user1570222 over 3 years

    I'm using WebView to browse pesopay.com and it works properly, except when I pressed the submit button. Using internet browsers like Google Chrome will show a pop up window, it confirms the information you filled. But in my Android WebView nothing happened when I pressed the submit button. I think because WebView is not enabled to display a pop up window.

    Can anyone point me what is wrong?

    Here is my activity:

    public class PaymentActivity extends Activity {
    
    String amount1;     
        @SuppressLint("SetJavaScriptEnabled")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.payment);
    
             Bundle extras = getIntent().getExtras(); 
                if(extras !=null)
                {
                    amount1 = extras.getString("amount1");
    
                }
    
            WebView web = (WebView) findViewById(R.id.web1);
            web.getSettings().setJavaScriptEnabled(true);
            web.loadUrl("javascript:window.onload = function(){setValue(\""+ amount1 +"\");};");
            web.loadUrl("file:///android_asset/www/index.html");   
        }    
    }
    

    My web page:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <script type="text/javascript"> 
    
        function setValue(amount1) {
            myValue = amount1;
            document.getElementById("amount").value = myValue;
    
        }
    </script>
    <script type="text/javascript">  
        function rand ( n )
        {
            document.getElementById("orderRefId").value =  ( Math.floor ( Math.random ( ) * n + 1 ) );
        }
    </script>
    </head>
    
    <body onLoad="rand(200000)">
            <!-- 
                Note: https://www.pesopay.com/b2c2/eng/payment/payForm.jsp for live payment URL
                      https://test.pesopay.com/b2cDemo/eng/payment/payForm.jsp for test payment URL
            -->
            <form method="POST" name="frmPayment" action="https://test.pesopay.com/b2cDemo/eng/payment/payForm.jsp">
            <table>
            <tbody>
            <tr>
                <td>Order Reference No. (your reference number for every transaction that has transpired):</td> 
                <td><input type="text" id="orderRefId" name="orderRef" value="Test-001"/></td>
            </tr>   
            <tr>
                <td>Amount:</td>
                <td><input type="text" name="amount" id="amount" value=""/></td>
    
            </tr>
            <tr>
                <td>Currency Code - "608" for Philippine Peso, "840" for US Dollar:</td>
                <td><input type="text" name="currCode" value="608"/></td>
            </tr>   
            <tr>
                <td>Language:</td>
                <td><input type="text" name="lang" value="E"/></td>
            </tr>   
            <tr>
                <td>Merchant ID (the merchant identification number that was issued to you - merchant IDs between test account and live account are not the same):</td> 
                <td><input type="text" name="merchantId" value="18056869"/></td>
            </tr>
            <tr>    
                <td>Redirect to a URL upon failed transaction:</td>
                <td><input type="text" name="failUrl" value="http://www.yahoo.com?flag=failed"/></td>
            </tr>   
            <tr>
                <td>Redirect to a URL upon successful transaction:</td>
                <td><input type="text" name="successUrl" value="http://www.google.com?flag=success"/></td>
            </tr>
            <tr>
                <td>Redirect to a URL upon canceled transaction:</td>
                <td><input type="text" name="cancelUrl" value="http://www.altavista.com?flag=cancel"/></td>
            </tr>
            <tr>
                <td>Type of payment (normal sales or authorized i.e. hold payment):</td> 
                <td><input type="text" name="payType" value="N"/></td>
            </tr>
            <tr>    
                <td>Payment Method - Change to "ALL" for all the activated payment methods in the account, Change to "BancNet" for BancNet debit card payments only, Change to "GCASH" for GCash mobile payments only, Change to "CC" for credit card payments only:</td>
                <td><input type="text" name="payMethod" value="ALL"/></td>
            </tr>
            <tr>    
                <td>Remark:</td>
                <td><input type="text" name="remark" value="Asiapay Test"/></td>
            </tr>
            <!--<tr>    
                <td>Redirect:</td>
                <td><input type="text" name="redirect" value="1"/></td>
            </tr>-->
            <tr>
                <td></td>
            </tr>   
    
            <input type="submit" value="Submit">
    
            </tbody>
            </table>    
    
            </form>
    
    </body>
    </html>
    
  • user1570222
    user1570222 over 11 years
    But its just displaying a toast in webview.
  • user1570222
    user1570222 over 11 years
    the pop up that doesn't display in my web view is not what I created. it a pop up of the site that I'm browsing. link test.pesopay.com/b2cDemo/eng/payment/payForm2.jsp
  • Nibha Jain
    Nibha Jain over 11 years
    ok ok i got it ,hav u tried this on onCreate() webView.getSettings().setJavaScriptCanOpenWindowsAutomatical‌​ly(true);
  • Nibha Jain
    Nibha Jain over 11 years
    or check some other we setting which may help you developer.android.com/reference/android/webkit/…
  • MysticMagicϡ
    MysticMagicϡ over 9 years
    +1. Thanks. webView.getSettings().setJavaScriptCanOpenWindowsAutomatical‌​ly(true); is working for me.