android中Webview与javascript的交互(互相调用)
16lz
2022-07-21
最近做android项目中遇到要在webview中做与js交互相关的东东,涉及到js中调用android本地的方法,于是查了资料整理了一下android和js互相调用的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互。
第一步:
mainfest.xml中加入网络权限
[java] view plain copy- <uses-permissionandroid:name="android.permission.INTERNET"/>
加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。
[html] view plain copy- <body>
- <a>js中调用本地方法</a>
- <script>
- functionfunFromjs(){
- document.getElementById("helloweb").innerHTML="HelloWebView,i'mfromjs";
- }
- varaTag=document.getElementsByTagName('a')[0];
- aTag.addEventListener('click',function(){
- //调用android本地方法
- myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(Stringname)!!");
- returnfalse;
- },false);
- </script>
- <p></p>
- <divid="helloweb">
- </div>
- </body>
第三步:
实现android工程与js交互的相关代码
android主题代码:
[java] view plain copy- @SuppressLint({"JavascriptInterface","SetJavaScriptEnabled"})
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- 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(newJavaScriptObject(mContext),"myObj");
- //载入js
- mWebView.loadUrl("file:///android_asset/test.html");
- //点击调用js中方法
- mBtn1.setOnClickListener(newView.OnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- mWebView.loadUrl("javascript:funFromjs()");
- Toast.makeText(mContext,"调用javascript:funFromjs()",Toast.LENGTH_LONG).show();
- }
- });
- }
- publicclassJavaScriptObject{
- ContextmContxt;
- publicJavaScriptObject(ContextmContxt){
- this.mContxt=mContxt;
- }
- publicvoidfun1FromAndroid(Stringname){
- Toast.makeText(mContxt,name,Toast.LENGTH_LONG).show();
- }
- publicvoidfun2(Stringname){
- Toast.makeText(mContxt,"调用fun2:"+name,Toast.LENGTH_SHORT).show();
- }
- }
效果图:
。。。。
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- 类和 Json对象
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- android上一些方法的区别和用法的注意事项
- android实现字体闪烁动画的方法
- Android(安卓)Wifi模块分析(三)
- Android中dispatchDraw分析
- Android四大基本组件介绍与生命周期