开发者社区> 壮壮father> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

安卓Native和H5页面进行交互

简介: 安卓Native和H5页面进行交互   1、H5页面调用安卓Native界面    1)通过给webView添加JsInterface,安卓提供接口,让H5来进行调用        a)安卓写一个类,里面的方法需要用通过注解来表明是java接口的方法。
+关注继续查看

安卓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脚本需要完全加载到页面中才可以调用到,否则没有任何效果

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
airserver安卓版手机屏幕投屏电脑神器
AirServer一款投屏神器,可以帮你轻松地将iPhone、iPad投屏到Mac。是不是经常看到游戏主播用AirServer投屏?此外,AirServer也是视频Up主必备工具之一!用来录制演示教程不错。除了实现单个手机投屏到电脑或荧幕。如果你有多画面投屏或者跨设备投屏的需求,不妨试试这个软件。
51 0
[STF 手机设备管理平台] 连接其它操作系统上的安卓设备实操介绍
[STF 手机设备管理平台] 连接其它操作系统上的安卓设备实操介绍
61 0
安卓之父重返手机硬件市场,亚马逊抛弃头盔眼镜推出AR新技术 | 快报
而且,现在Android市场已经是一片红海了,尤其是在中低端机领域更是如此,此次Andy回到硬件界或许就是为了生产一款Android的标杆产品,展开与iOS设备的正面竞争。
56 0
【极品手机推荐】安卓3G运存16G内存,相机1300+500,三星高画质显示J7109|J7108
性能: 3G运存16G内存,相机1300+500,三星高画质显示 品牌: 三星 价格: 899¥ 什么小米、华为、魅族,甩他们几条街。这么好的手机不为大众所知,真是浪费。 手机,现在就是苹果、三星
767 0
PC上的手机模拟器大全(安卓/苹果/黑莓/塞班/微软)
引用:http://www.iteye.com/topic/1117663 谷歌的Android(安卓) 安卓系统在近几年迅速走红,占领了大片手机市场。Android模拟器也可以在Linux下跑,所以你不必担心一直依赖你的windows Android开发环境搭建(Windows篇) Android开发环境搭建(Linux篇) Android模拟器1.
2087 0
[STF手机设备管理平台]连接其它操作系统上的安卓设备实操介绍
一、背景 看到之前曾有人发贴,贴名【stf 连接各操作系统上安卓设备的操作方法分享】,介绍了一下,虽然说方法和理论都有,但下述评论中还是有很多人不知如何操作,特别是不知道stf provider命令如何使用,特此,提供具体的解决方法,当然本人注重结果导向,所以下述方法中,重点都是通过截图方法来展开,不涉及理论上的过多解释。
2241 0
+关注
壮壮father
从14年开始从事安卓开发。喜欢接触新鲜事物,不断的挑战自己
文章
问答
文章排行榜
最热
最新
相关电子书
更多
移动 App 性能监测实践(iOS篇)
立即下载
移动App性能监测实践(ios篇)
立即下载
React-Native 在iOS上的性能优化方案
立即下载