cocos creator 提交from表單定向支付寶
阿新 • • 發佈:2018-12-11
接到個需求,遊戲中支付要向一個地址提交一個表單,然後那個地址會重新定向到一個網頁,網頁會喚醒支付寶這些。有點不好說,大概就是遊戲中提交到後臺寫的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); } }); }