Android与JS的交互之jsbridge使用

jsbridge
repositories {
    // ...
    maven { url "https://jitpack.io" }
}
dependencies {
    compile 'com.github.lzyzsd:jsbridge:1.0.4'
}

app/src/main/新建assets/自己命名jsbridge.html

内容



    
    Title




打印信息

布局文件



    

主要代码:

 bridge_view.loadUrl("file:///android_asset/jsbridge.html");

        //支持App内部javascript交互
        bridge_view.getSettings().setJavaScriptEnabled(true);

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button ja_send;
    private Button ja_send_it;
    private BridgeWebView bridge_view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();


        bridge_view.loadUrl("file:///android_asset/jsbridge.html");

        //支持App内部javascript交互
        bridge_view.getSettings().setJavaScriptEnabled(true);
//        //自适应屏幕
//        bridge_view.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
//        bridge_view.getSettings().setLoadWithOverviewMode(true);
//        //设置可以支持缩放
//        bridge_view.getSettings().setSupportZoom(true);
//        //扩大比例的缩放
//        bridge_view.getSettings().setUseWideViewPort(true);
//        //设置是否出现缩放工具
//        bridge_view.getSettings().setBuiltInZoomControls(true);

        //默认接收
        bridge_view.setDefaultHandler(new BridgeHandler() {
            @Override
            public void handler(String data, CallBackFunction function) {
                String msg = "默认接收到js的数据:" + data;
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();

                function.onCallBack("java默认接收完毕,并回传数据给js"); //回传数据给js
            }
        });
        //指定接收 submitFromWeb 与js保持一致
        bridge_view.registerHandler("submitFromWeb", new BridgeHandler() {
            @Override
            public void handler(String data, CallBackFunction function) {
                String msg = "指定接收到js的数据:" + data;
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();

                function.onCallBack("java指定接收完毕,并回传数据给js"); //回传数据给js
            }
        });
    }

    private void initView() {
        ja_send = (Button) findViewById(R.id.ja_send);
        ja_send_it = (Button) findViewById(R.id.ja_send_it);
        bridge_view = (BridgeWebView) findViewById(R.id.bridge_view);

        ja_send.setOnClickListener(this);
        ja_send_it.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.ja_send:
                bridge_view.send("发送数据默认接收", new CallBackFunction() {
                    @Override
                    public void onCallBack(String data) {
                        Toast.makeText(MainActivity.this, "ss"+data, Toast.LENGTH_SHORT).show();
                    }
                });
                break;
            case R.id.ja_send_it:

                bridge_view.callHandler("functionInJs", "指定接收", new CallBackFunction() {
                    @Override
                    public void onCallBack(String data) {
                        Toast.makeText(MainActivity.this, "ss"+data, Toast.LENGTH_SHORT).show();
                    }
                });
                break;
        }
    }
}



你可能感兴趣的:(Android与JS的交互之jsbridge使用)