安卓与JS通信相互调用
来源:互联网 发布:多线程编程技术 编辑:程序博客网 时间:2024/06/06 06:52
最近做Android项目中遇到要在webview中做与js交互相关的东东,涉及到js中调用android本地的方法,于是查了资料整理了一下android和js互相调用的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互。
第一步:
mainfest.xml中加入网络权限
<uses-permission android:name="android.permission.INTERNET" />
第二步:
加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。
<body> <a>js中调用本地方法</a> <script> function funFromjs(){ document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js"; } var aTag = document.getElementsByTagName('a')[0]; aTag.addEventListener('click', function(){ //调用android本地方法 myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(String name)!!"); return false; }, false); </script> <p></p> <div id="helloweb"> </div> </body>第三步:
实现android工程与js交互的相关代码
android主题代码:
@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" }) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 initViews(); //设置编码 mWebView.getSettings().setDefaultTextEncodingName("utf-8"); //支持js mWebView.getSettings().setJavaScriptEnabled(true); //设置背景颜色 透明 mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0)); //设置本地调用对象及其接口 mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj"); //载入js mWebView.loadUrl("file:///android_asset/test.html"); //点击调用js中方法 mBtn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mWebView.loadUrl("javascript:funFromjs()"); Toast.makeText(mContext, "调用javascript:funFromjs()", Toast.LENGTH_LONG).show(); } }); }
js调用的android对象方法定义
public class JavaScriptObject { Context mContxt; @JavascriptInterface //sdk17版本以上加上注解 public JavaScriptObject(Context mContxt) { this.mContxt = mContxt; } public void fun1FromAndroid(String name) { Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show(); } public void fun2(String name) { Toast.makeText(mContxt, "调用fun2:" + name, Toast.LENGTH_SHORT).show(); } }
0 0
- 安卓与JS通信相互调用
- AS与JS相互通信(Flex中调用js函数)
- AS与JS相互通信(Flex中调用js函数)
- AS与JS相互通信(Flex中调用js函数)
- AS与JS相互通信(Flex中调用js函数)
- 安卓与html混合开发之原生与js相互调用
- 安卓与js调用
- AS与JS相互通信
- Flex与js相互通信
- as3 与js相互通信
- JS与安卓的通信
- html5与安卓native交互,相互调用
- Silverlight与JS相互调用
- PHP与JS相互调用
- JS与Flash相互调用
- androidwebview与js相互调用
- FlexPaper与js相互调用
- Flex与JS相互调用
- 关于Java的全英文博客,值得学习知识和英语非常的有用
- 矩阵下三角元素之和
- [LeetCode]78.Subsets
- 数据库SQL语言语法总结4---数据更新
- 常用正则表达式
- 安卓与JS通信相互调用
- 奇葩的某个类没有被Cglib动态代理,世间仅有
- poj1247
- 删除指定字符
- C++强制类型转换
- vue与angular的区别
- uC/OS-II移植 详解 系统时钟部分
- leetcode :Integer to Roman
- 搜索-迭代加深