HTML(JavaScript)与Android的webView控件相互通信,今天仔细研究才发现,这两者相互调用是非常简单的,只需要在Android里面调用JavaScript的方法,以及在JavaScript里面调用Android里面的方法即可完成,思路很简单,具体执行起来其实也并不复杂,下面是具体的代码,以及代码注释:
HTML代码

        Android端与HTML相互通信    

Android与HTML相互通信示例

<--!h2标签说明-->

Android消息

在此处输入想要发送到Android端的信息
在这里设置一个文本框,用来获取用户输入的文字消息然后应用到js里面进操作
//导包略过public class MainActivity extends Activity {    private WebView webView;    private EditText editText;    private Button button;    private TextView textView;    //定义好所需要的控件    @SuppressLint("JavascriptInterface")    //定义好SuppressLint("JavascriptInterface")    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ByID();        //设置支持JavaScript语言,让WebView支持javascript的动作        webView.getSettings().setJavaScriptEnabled(true);        //交互对象的添加,传入对象在html5界面的javascript中获取,该对象用于两者之间的交互。question,给JavaScript添加一个与之交互的接口,传入一个对象和该对象的名字,在html5端根据这个名字得到对象        //提供一个供h5交互的对象,并给对象标记个名字供js识别        webView.addJavascriptInterface( mUser= new User(), "user");        //自定义实现alert        //要加载的页面        webView.loadUrl("http://10.0.2.2:63343/WWW/PHPwithHTML/test.html");        webView.setWebViewClient(new zzaWebViewClient());    }public void ByID(){    //关联ID    webView = findViewById(R.id.webView);    textView=findViewById(R.id.textView);    button=findViewById(R.id.button);    editText=findViewById(R.id.editText);}    public class User {        //在user类里面写两个方法供js调用        //一定要在每一个方法前面加入 @JavascriptInterface        private String username;       @JavascriptInterface        public String getUsername() {            //此方法直接返回AndroidUI页面里面的文本框的值            return editText.getText().toString();        }        @JavascriptInterface        public void setUsername(String username) {            this.username = username;            //将js里面传过来的值直接添加到UI页面的文本信息之中            textView.append(username+"\n");                Log.i("TAG", username);        }    }    class zzaWebViewClient extends WebViewClient{        //不重新打开系统的浏览器加载网页        @Override        public boolean shouldOverrideUrlLoading(WebView view, String url) {            view.loadUrl(url);            return true;        }    }}

效果图:
JavaScript---->Android

Android----->JavaScript

更多相关文章

  1. Android/iOS内嵌Unity开发示例
  2. Android的Camera架构介绍
  3. android launcher 分析
  4. 比較具体的handle机制
  5. Application Fundamentals
  6. Android(安卓)Handler 用法
  7. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
  8. Qt for Android(安卓)调用android原生接口分享图片或文字
  9. Android应用程序与SurfaceFlinger服务的连接过程分析

随机推荐

  1. RAID原理分析总结-运维工作记录-51CTO博
  2. Python-pip安装包下载慢,怎么办?
  3. 大数据和云计算技术周报(第27期)
  4. 下划线_在Python中的用途
  5. 基于开源CMDB系统快速实现一棵服务树
  6. Python-web验证码的实现
  7. 政务大数据系列7:政务大数据的部署结构
  8. Python将一个数逆序列放入列表中
  9. 玩转可迭代对象迭代器生成器
  10. 《大数据架构详解:从数据获取到深度学习》