在android中调用js代码,js中又回调java 代码

需求:

监听H5界面中的按钮的点击事件,当用户点击了按钮,android需要去获取H5中某些输入框的信息


网址:

https://cai-app-h5.huaxiafinance.com:58443/huaxia-crm-h5/authentication/authenticationIndex


上代码:

package cn.mifengkong.javaandjs;

import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;
    private String url = "https://cai-app-h5.huaxiafinance.com:58443/huaxia-crm-h5/authentication/authenticationIndex";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = (WebView) findViewById(R.id.webview);

        WebSettings settings = mWebView.getSettings();
        //设置WebView属性,能够执行Javascript脚本
        settings.setJavaScriptEnabled(true);

        mWebView.addJavascriptInterface(new DataJavascriptInterface(this), "onclicklistener");

        mWebView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return true;
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);

            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                addImageClickListner();
            }
        });
        mWebView.loadUrl(url);
    }

    private void addImageClickListner() {
        //此处的代码是加载js,监听按钮的点击事件,然后获取某些输入框中的内容
        mWebView.loadUrl("javascript:(function(){" +
                "var objs = document.getElementById('authentication'); " +
                "objs.ontouchend = function()" +
                "    { " +
                "var mobileNo = document.getElementById('userMobileNo').value; " +
                "var bankCardNo = document.getElementById('bankCardNo').value; " +
                "var iDCard = document.getElementById('iDCard').value; " +
                "var userName = document.getElementById('userName').value; " +
                "var bankcardName = document.getElementById('bankcardName').options[document.getElementById('bankcardName').selectedIndex].text;" +
                "           window.onclicklistener.savedata(mobileNo,bankCardNo,iDCard,userName,bankcardName);" +
                "    }" +
                "})()");
    }

    // js通信接口
    public class DataJavascriptInterface {

        private Context context;

        public DataJavascriptInterface(Context context) {
            this.context = context;
        }

        @JavascriptInterface
        public void savedata(String mobileNo, String bankCardNo, String iDCard, String userName, String bankcardName) {
            Log.e("jiang", mobileNo + "--" + bankCardNo + "--" + iDCard + "--" + userName + "--" + bankcardName);
        }
    }
}

源码下载

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Java 调用 JavaScript 的 Promise 的方法如下: 1. 使用 WebView 加载 JavaScript 代码调用的 Promise 函数。 2. 使用 WebView 的 addJavascriptInterface() 方法Java 对象映射到 JavaScript 。 3. 在 JavaScript 代码调用 Promise 函数,并使用 Java 对象的回调方法作为 Promise 的回调函数。 4. 在 Java 对象的回调方法处理 Promise 的结果。 示例代码如下: ```java // Java 对象,实现了 JavascriptInterface 接口 private final class JSInterface { // 回调方法,用于处理 Promise 的结果 @JavascriptInterface public void onPromiseResult(final String result) { // TODO: 在这里处理 Promise 的结果 } } // 在 WebView 加载 JavaScript 代码 webView.loadUrl("javascript: var promise = new Promise((resolve, reject) => { // TODO: 这里是 Promise 代码 });"); // 将 Java 对象映射到 JavaScript webView.addJavascriptInterface(new JSInterface(), "JSInterface"); // 调用 Promise 函数,并使用 Java 对象的回调方法作为 Promise 的回调函数 webView.loadUrl("javascript: promise.then(result => JSInterface.onPromiseResult(result));"); ``` 在 JavaScript 代码的 Promise 函数,可以使用 resolve() 和 reject() 方法来解决或拒绝 Promise。在 Java 对象的回调方法,可以使用 result 参数来访问 Promise 的结果。 注意,上述代码假定 WebView 已经完成了加载,并且 JavaScript 代码的 Promise 函数已经定义。在实际使用,可能需要使用 WebView 的相关回调方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值