最近做android项目中遇到要在webview中做与js交互相关的东东,涉及到js中调用android本地的方法,于是查了资料整理了一下android和js互相调用的过程。如下demo,demo的主要实现过程如下:通过加载本地的html文件(里面有js脚本),实现android本地方法和js中的交互。

第一步:

mainfest.xml中加入网络权限

[java] view plain copy
  1. <uses-permissionandroid:name="android.permission.INTERNET"/>
第二步:

加载本地写好的html文件(定义好js中提供给android调用的方法 funFromjs(),和android提供给js调用的对象接口fun1FromAndroid(String name)),放在 assets目录下。

[html] view plain copy
  1. <body>
  2. <a>js中调用本地方法</a>
  3. <script>
  4. functionfunFromjs(){
  5. document.getElementById("helloweb").innerHTML="HelloWebView,i'mfromjs";
  6. }
  7. varaTag=document.getElementsByTagName('a')[0];
  8. aTag.addEventListener('click',function(){
  9. //调用android本地方法
  10. myObj.fun1FromAndroid("调用android本地方法fun1FromAndroid(Stringname)!!");
  11. returnfalse;
  12. },false);
  13. </script>
  14. <p></p>
  15. <divid="helloweb">
  16. </div>
  17. </body>

第三步:

实现android工程与js交互的相关代码

android主题代码:

[java] view plain copy
  1. @SuppressLint({"JavascriptInterface","SetJavaScriptEnabled"})
  2. @Override
  3. protectedvoidonCreate(BundlesavedInstanceState){
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. //初始化
  7. initViews();
  8. //设置编码
  9. mWebView.getSettings().setDefaultTextEncodingName("utf-8");
  10. //支持js
  11. mWebView.getSettings().setJavaScriptEnabled(true);
  12. //设置背景颜色透明
  13. mWebView.setBackgroundColor(Color.argb(0,0,0,0));
  14. //设置本地调用对象及其接口
  15. mWebView.addJavascriptInterface(newJavaScriptObject(mContext),"myObj");
  16. //载入js
  17. mWebView.loadUrl("file:///android_asset/test.html");
  18. //点击调用js中方法
  19. mBtn1.setOnClickListener(newView.OnClickListener(){
  20. @Override
  21. publicvoidonClick(Viewv){
  22. mWebView.loadUrl("javascript:funFromjs()");
  23. Toast.makeText(mContext,"调用javascript:funFromjs()",Toast.LENGTH_LONG).show();
  24. }
  25. });
  26. }
js调用的android对象方法定义

[java] view plain copy
  1. publicclassJavaScriptObject{
  2. ContextmContxt;
  3. publicJavaScriptObject(ContextmContxt){
  4. this.mContxt=mContxt;
  5. }
  6. publicvoidfun1FromAndroid(Stringname){
  7. Toast.makeText(mContxt,name,Toast.LENGTH_LONG).show();
  8. }
  9. publicvoidfun2(Stringname){
  10. Toast.makeText(mContxt,"调用fun2:"+name,Toast.LENGTH_SHORT).show();
  11. }
  12. }

效果图:


。。。。

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. 类和 Json对象
  3. Python list sort方法的具体使用
  4. python list.sort()根据多个关键字排序的方法实现
  5. android上一些方法的区别和用法的注意事项
  6. android实现字体闪烁动画的方法
  7. Android(安卓)Wifi模块分析(三)
  8. Android中dispatchDraw分析
  9. Android四大基本组件介绍与生命周期

随机推荐

  1. 【AS基础篇二:线性布局和相对布局的使用】
  2. 获取Android设备的方向
  3. Android(安卓)JNI(实现自己的JNI_OnLoad函
  4. Android大神 博客
  5. 关于android的Menu理解
  6. 在Android2.2模拟器上安装Android(安卓)M
  7. android的onCreateOptionsMenu()创建菜单
  8. android中的apk签名
  9. Android经典应用程序开发
  10. Android(安卓)OOM内存溢出解决方案之一