安卓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 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【专业技术】Android内存泄漏简介

存在问题: 不少人认为JAVA程序,因为有垃圾回收机制,应该没有内存泄露。 解决方案: 其实如果我们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它...

2733
来自专栏知识分享

android 之TCP客户端编程

吸取教训!!!本来花了5个小时写完了,没想到,,,因为没点上面的自动保存查看一下,全没了,重新写呗 关于网络通信:每一台电脑都有自己的ip地址,每台电脑上的网络...

3738
来自专栏分享达人秀

Activity任务栈和启动模式

通过前面的学习,Activity的基本使用都已掌握,接下来一起来学习更高级的一些内容。 Android采用任务栈(Task)的方式来管理Act...

1986
来自专栏漏斗社区

天空飘来五字:Android逆向smali

本期,我们将继续Android逆向动态分析之smali篇。内容包括smali语言介绍与动态调试。

1142
来自专栏向治洪

Android Remote Views

听名字就可以看出,remote views是一种远程view,感觉有点像远程service,其实remote views是view的一个结构,他可以在其他的进程...

1977
来自专栏指尖下的Android

菜鸡的MVP架构漫谈

相信大家在网上看过关于MVP架构的博客数不胜数,至于MVP到底是什么,也不需要我再从百度百科复制一遍了,通俗的说MVP就是解决Model和View的耦合,没有使...

862
来自专栏向治洪

Universal Image Loader for Android 使用实例

<span style="white-space:pre">      </span>// 1.获取ImageLoader实例         ImageLo...

22710
来自专栏酷玩时刻

统一管理项目中的接口回调

无论是 Java Web 开发还是 Android 开发我们都避免不了异步处理业务的逻辑。有异步的出现一定就有异步结果(接口)的回调。你之前是不是有为每一个异步...

924
来自专栏Flutter入门到实战

WebView深度学习(一)之WebView的基本使用以及Android和js的交互

//设置WebView缓存(当加载 html 页面时,WebView会在/data/data/包名目录下生成 database 与 cache 两个文件夹,请求...

1202
来自专栏向治洪

HTML中的javascript交互

在Android开发中,越来越多的商业项目使用了Android原生控件与WebView进行混合开发,当然不仅仅就是显示一个WebView那么简单,有时候还需要...

2145

扫码关注云+社区

领取腾讯云代金券