1. 程式人生 > >cocos creator 提交from表單定向支付寶

cocos creator 提交from表單定向支付寶

      接到個需求,遊戲中支付要向一個地址提交一個表單,然後那個地址會重新定向到一個網頁,網頁會喚醒支付寶這些。有點不好說,大概就是遊戲中提交到後臺寫的web頁面,web頁面會通過你傳過來引數會喚醒支付寶支付。大概就是這麼回事。開始的想法是用webView載入一個轉成字串的html程式碼但是creator不支援這種操作。那麼web版就好做了

var body = document.getElementsByTagName('body')[0];

body.innerHTML = htmlStr      //htmlStr就是自己要執行的html頁面程式碼

window.form.submit();

android上開始的時候我是想重新開啟一個Activity在上面新增一個webView就好了但是這樣會跳轉到一個空白的頁面感覺不太好,

自己弄了半天是在原來的active上面新增一個webView 設定index=0,然後呼叫效果還不錯下面是程式碼

private void addView()
{
    webView=new WebView(this);
    WebSettings settings = webView.getSettings();
    settings.setDomStorageEnabled(true);
    settings.setJavaScriptEnabled(true);
    settings.setLoadWithOverviewMode(true);
    settings.setAllowFileAccess(true);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT);
    params.setMargins(10, 10, 10, 50);
    webView.setLayoutParams(params);
    webView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url == null) return false;

            try{
                if(!url.startsWith("http://") && !url.startsWith("https://")){
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(intent);
                    return true;
                }
            }catch (Exception e){
                return true;
            }
            view.loadUrl(url);
            return false;
        }
    });
    FrameLayout layout = (FrameLayout)app.getWindow().getDecorView();
    layout.addView(webView,0);
}

呼叫

static public void webStart(String str){
    final String htmlStr=str;
    webView.post(new Runnable() {     
        @Override
        public void run() {
            webView.loadDataWithBaseURL(null,htmlStr, "text/html" , "utf-8", null);
        }
    });
}