egret Android微端通过webview调起支付宝支付

一、在activity_main.xml添加webview控件

<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="invisible">

</WebView>

二、初始化webview

//应用过程中将其隐藏掉效果更佳
webview = (WebView) findViewById(R.id.webview);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
// 设置可以访问文件
webSettings.setAllowFileAccess(true);
// 设置支持缩放
webSettings.setBuiltInZoomControls(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
// webSettings.setDatabaseEnabled(true);

// 使用localStorage则必须打开
webSettings.setDomStorageEnabled(true);

webSettings.setGeolocationEnabled(true);

webview.setWebViewClient(new WebViewClient(){
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.e(TAG, "访问的url地址:" + url);
        if (parseScheme(url)) {
            try {
                Uri uri = Uri.parse(url);
                Intent intent;
                intent = Intent.parseUri(url,
                        Intent.URI_INTENT_SCHEME);
                intent.addCategory("android.intent.category.BROWSABLE");
                intent.setComponent(null);
                // intent.setSelector(null);
                startActivity(intent);

            } catch (Exception e) {

            }
        } else {
            view.loadUrl(url);
        }

        return true;

    }

});

三、js端调起webview

1、注册

launcher.setExternalInterface("callNativeForPay", new INativePlayer.INativeInterface() {
    @Override
    public void callback(String s) {
        Log.d("Egret Launcher", s);
        getPay(s);
    }
});

2、调起

//调起支付宝付款
private void getPay(String jsonString){
    Log.i(TAG,jsonString);
    String url1 = "";
    try {
        JSONObject jsonObject = new JSONObject(jsonString);
        url1 = jsonObject.getString("payUrl");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    final String payUrl = url1;
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            webview.setVisibility(View.VISIBLE);
            webview.loadUrl(payUrl);
            close.setVisibility(View.VISIBLE);
        }
    });
}

3、其他相关方法

   public boolean parseScheme(String url) {

       if (url.contains("platformapi/startapp")) {

           return true;
       } else {

           return false;
       }
   }

   //关闭webview
   private void closeWebview(){
       webview.setVisibility(View.INVISIBLE);
       launcher.callExternalInterface("callJSForPay", "");
   }
   @Override
   public boolean onKeyDown(int i, KeyEvent keyEvent) {
       if(i == keyEvent.KEYCODE_BACK){
           Log.e(TAG,"keydown");
           if(webview.getVisibility() == View.VISIBLE){
               closeWebview();
               return true;
           }
       }
       return super.onKeyDown(i, keyEvent);
   }


发表评论

(必填)

(必填)

(以便回访)

博客已稳定运行: 访问量:191,762 views 网站备案号:闽ICP备17026396号-1