专栏首页用户3030674的专栏安卓Native和H5页面进行交互

安卓Native和H5页面进行交互

安卓Native和H5页面进行交互

1、H5页面调用安卓Native界面 1)通过给webView添加JsInterface,安卓提供接口,让H5来进行调用         a)安卓写一个类,里面的方法需要用通过注解来表明是java接口的方法。

      eg:

private  class WebInterface {
        @JavascriptInterface
        public void callFromJSBasicDataType(int x, float y, char c, boolean result) {
            String str = "-" + (x + 1) + "-" + (y + 1) + "-" + c + "-" + result;
            Log.e("tttt", "tttttt"+str);
        }
        @JavascriptInterface
        public void callAndroidMethod() {
            Log.e("tttt", "tttttt2");
        }
    }

     b)设置webView可以支持js       eg:           webView.getSettings().setJavaScriptEnabled(true);          c)给webView添加js接口类,并取别名           webView.addJavascriptInterface(new WebInterface(), "robot");     至此,安卓的配置完成了。       下面配置HTML页面       在代码中添加下面的代码,如果加载了页面了,就会调用起别名叫robot这个接口类里面的js接口方法     <p>         <button onclick="robot.callFromJSBasicDataType(1,2,'a',true);">点击我调用android 方法</button>     </p>

2)通过设置webview的setWebViewClient。安卓通过url跳转时的改变,来进行不同的操作 当webview加载的页面出现变化的时候,可以进行不同的操作,例如访问站外的网址,或者黑名单的网址进行提示     eg:

wb.setWebViewClient(new Custom());
    
    private class Custom extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            Log.e("tttt", url);
            if (url.contains("bai")) {
                Dialog d=new Dialog(MainActivity.this);
                d.setTitle("ttttt");
                d.show();
                return true;
            }
            return false;
        }
        @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);
        }
    }

2、安卓Native界面调用H5方法 主要就是通过webview的LoadUrl方法 eg: webView.loadUrl("javascript:noParamFunction();"); 注:需要页面加载完成之后调用才有效。因为js脚本需要完全加载到页面中才可以调用到,否则没有任何效果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TabLayout基本使用

    Tablayout继承自HorizontalScrollView,可以用作顶部标签效果、底部导航栏效果。一般多与ViewPager一起使用。

    用户3030674
  • java线程的实现

    一共有两种方法Thread类和Runnable接口,相对来讲,更趋向于用Runnable 因为一个类可以实现多个接口,但是只能继承一个类,所以相对来说倾向用Ru...

    用户3030674
  • java写文件读写操作(IO流,字符流)

    用户3030674
  • 28、购物车结算页面-导航栏与地址选择布局

    (1)老规矩,复制一份我们已经写好的test.vue页面初始化我们购物车页面cart.vue

    Ewall
  • 反击爬虫,工程师的脑洞可以有多大?

    对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它。 而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,...

    芋道源码
  • kafka-manager对比

    主要对比滴滴的kafka-manager 和雅虎的CMAK(原名kafka manager)

    皮皮熊
  • 参加2020Jam初赛记录与部分题目解答

    Google Jam大赛是谷歌举办的一年一届的在线答算法题的的比赛。初赛比赛时长27小时,一共有5道算法题,总分100分,获得分数30分和以上者,就能晋级下一轮...

    逝兮诚
  • 发送短信倒计时(附带数据验证)##干货

    Happy、Liu
  • jsp的10年是谁让它如此落幕?

    随着容器技术(docker、k8s)以及微服务架构逐步成熟和发展,这种强调后端分离思想让jsp这个陪伴我近10年的页面渲染技术宣告落幕了,有点伤感。。。

    编筐少年
  • LeetCode刷题总结python3

    pre.next = l1 if l1 else l2 # 类似C++三目表达式,l1为真则l1,否则l2

    用户7787521

扫码关注云+社区

领取腾讯云代金券