3

私はWebViewpesopay.com をブラウズするために使用していますが、送信ボタンを押したとき以外は正常に動作します。Google Chrome などのインターネット ブラウザを使用すると、入力した情報を確認するポップアップ ウィンドウが表示されます。しかし、私の Android ではWebView、送信ボタンを押しても何も起こりませんでした。WebViewポップアップウィンドウの表示が有効になっていないためだと思います。

誰が間違っているのか教えてもらえますか?

ここに私の活動があります:

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

私のウェブページ:

<!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>
4

2 に答える 2

8

私が正しい場合は 、Android から JavaScript 関数を呼び出すためにJavaScriptInterfaceを使用する必要があります。

あなたを助けるかもしれないこのリンクをチェックしてください:

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

または、いくつかの Web 設定を確認してください: http://developer.android.com/reference/android/webkit/WebSettings.html#setSupportMultipleWindows%28boolean

このコードを onCreate() に入れてみてください

        webView.getSettings().setPluginsEnabled(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
于 2012-08-06T06:21:29.667 に答える
0

Webview のダイアログを担当する機能は、WebChromeClientの onJsAlert です。

ここにサンプルコードがあります

  public class MyWebChromeClient extends WebChromeClient {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult jsResult) {
        // you can create your own dialog here or just return true for no pop up. 
        return true;
    }
}

これをあなたのウェブビューに追加してください:

MyWebChromeClient myWebChromeClient = new MyWebChromeClient();
webView.setWebChromeClient(myWebChromeClient);
于 2016-09-02T06:12:54.330 に答える