android Javascript交互
来源:互联网 发布:西科软件培训中心 编辑:程序博客网 时间:2024/05/22 10:45
12.8 青岛 阴
网上一搜一大把的东西,新开一贴记录下,已被自己不时之需
自己知道的android 里面与javascript交互式实现有两种,第一种比较实用,稍微麻烦;第二种实现简单,但是有局限性。
第一种:通过webview的addjavascript方法实现
//设置编码 wb.getSettings().setDefaultTextEncodingName("utf-8"); //支持js wb.getSettings().setJavaScriptEnabled(true); //设置背景颜色 透明 wb.setBackgroundColor(Color.argb(0, 0, 0, 0)); //设置本地调用对象及其接口 wb.addJavascriptInterface(new JavaScriptObject(this), "myObj"); //载入js wb.loadUrl("file:///android_asset/hh.html"); //点击调用js中方法 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { wb.loadUrl("javascript:displayDate()");//调用js里面的方法 } });定义出被js调用的方法。
public class JavaScriptObject { Context mContxt; public JavaScriptObject(Context mContxt) { this.mContxt = mContxt; } @JavascriptInterface //sdk17以后一定要有,而且写在躯体的方法前面,要不js不识别 public void fun1FromAndroid(String name) { Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show(); } @JavascriptInterface public void fun2(String name) { Toast.makeText(mContxt, "调用fun2:" + name, Toast.LENGTH_SHORT).show(); }}
再看一下 html文件
<!DOCTYPE html><html><head><meta charset="utf-8"><title>花重锦官城的博客(http://blog.csdn.net/a1021508536)</title><script>var a=1;function displayDate(){if(a%2==1){document.getElementById("demo").innerHTML=Date();}else{document.getElementById("demo").innerHTML="这是一个段落";}a++;}function displayDate2(){myObj.fun1FromAndroid("来自手机");}</script></head><body><h1>我的第一个 JavaScript 程序</h1><p id="demo">这是一个段落</p><button type="button" onclick="displayDate()">显示日期</button><button type="button" onclick="displayDate2()">调用android</button></body></html>button点击后会掉用js的displayData() 方法。 而,html中的button2点击后会调用app中的fun1FromAndroid()方法,这样就实现了与javascript的交互了。
第一种的项目连接 点击打开链接
第二种 通过 webview的setWebViewClient() 方法监听。
wvWebview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (MyHttpConfig.toFirst.equals(url)) { //将该url与一直的操作的url对比 判断 WebViewActivity.this.finish(); } else if (MyHttpConfig.toLogin.equals(url)) { startActivity(new Intent(WebViewActivity.this, LoginActivity.class)); } else view.loadUrl(url);// 当打开新链接时,使用当前的 WebView,不会使用系统其他浏览器 return true; } });这种方式的原理是获取到webview的变化状态及变化的url,将url进行对比,看该url是那种操作,进而进行自己的操作。这一种实现起来不需要更改html倒是简单,但是局限性就是要先知道变化操作的url。
本人知道的就俩种,用哪种方式看具体项目的需求自己取舍吧。
0 0
- Android WebView JavaScript交互
- Android WebView JavaScript交互
- JavaScript 与 Android 交互
- Android WebView JavaScript交互
- JavaScript与Android交互
- Android与Javascript交互
- android Javascript交互
- android和JavaScript交互
- Android与Javascript交互
- Android与Javascript交互
- Android与javascript交互
- android与javascript交互
- android与javascript交互
- android与javascript交互调用
- android webview 与 javascript交互
- android与javascript交互调用
- android与javascript交互调用
- android webview and javascript 交互
- 使用Concorde库在真机上因bitcode编译出错的解决方法
- NPAPI和PPAPI插件开发
- js学习进程(一)
- cordova打开文件的类型设置
- QT 网络传输补充篇
- android Javascript交互
- MapReduce基础篇-动态代理
- C# Enum,Int,String的互相转换 枚举转换
- ListView点击事件后回滚到顶部
- 找最小的封闭轮廓的图像
- 我的第一篇csdn博客
- pg_rman的安装、使用备份和恢复
- DB、ETL、DW、OLAP、DM、BI关系结构图
- JavaScript 全局属性和全局函数