博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML/JS 调用android方法,开发 Android。
阅读量:6157 次
发布时间:2019-06-21

本文共 1883 字,大约阅读时间需要 6 分钟。

由于业务需求和大趋势导致,目前纵观很多APP。很多都是用H5+native的方式去开发。关于wepApp和nativeApp它们之前的是是非非就不说了。

下面是利用H5应该是JS去调用本地Android的代码。

不是什么特别高深的东西。

第一布局:

1 
4 5
9 10

第二native代码。

setContentView(R.layout.activity_main);        webView = (WebView) findViewById(R.id.wv_web);        webView.loadUrl("file:///android_res/raw/test.html");        webView.setVerticalScrollBarEnabled(false);        webView.setHorizontalScrollBarEnabled(false);        webView.getSettings().setJavaScriptEnabled(true); //加上这句话才能使用javascript方法;        webView.addJavascriptInterface(new PayJavaScriptInterface(), "demo");
1  final class PayJavaScriptInterface { 2         PayJavaScriptInterface() { 3         } 4         @JavascriptInterface 5         public String getUserinfo()  { 6             return "getUserinfo"; 7         } 8  9 10         @JavascriptInterface11         public boolean needLogin()  {12             return true;13         }14         @JavascriptInterface15         public void haha()  {16             Toast.makeText(MainActivity.this,"hahaa",Toast.LENGTH_SHORT).show();17             Log.e("sssssssssssssssssssssss","sdfddddddddd");18         }19     }

第三HTML里面的代码:

test.html

    
交互Demo
getUserinfo:

test1.html代码:

1  2  3  4  5  6  7  8 17 18 

这样就可以实现了。

需要注意的点:

1.这里我加载的是本地app里面的html,所以使用的方式是

webView.loadUrl("file:///android_res/raw/test.html");

关于加载网页的可以直接,写上url,而我的html是的放在raw目录里面。使用的AndroidStudio。

2.设置了下webView的相关配置信息。具体代码有备注,或者可以查阅其他相关资料。

3.在本地写:

webView.addJavascriptInterface(new PayJavaScriptInterface(), "demo"); 其中第一个参数就是我下面写的一个类,第二个参数是在HTML里面的JS需要使用的。注意,在HTML里面我window后面跟的demo和这里是一样的,也必须保持一致才能成功调用。 然后就是你在JS里面调用了。这样应该就ok了。今天还继续研究下这玩意。 突然感觉不是特别清晰,这样说吧,这个demo这个就代码我们第一个参数new出的对象,然后我们在JS里面写window.demo,代表我PayJavaScriptInterface这个对象的实例,也就是我在第一个参数这边new出来的。然后再window.demo.haha();其实就是调用了PayJavaScriptInterface里面的haha的方法。然后就执行haha里面的代码。 这样表达应该还算清晰!

转载地址:http://ndpfa.baihongyu.com/

你可能感兴趣的文章
好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题...
查看>>
使用addChildViewController手动控制UIViewController的切换
查看>>
Android Fragment应用实战
查看>>
SQL Server查询死锁并KILL
查看>>
内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
查看>>
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>
android中的textview显示汉字不能自动换行的一个解决办法
查看>>
程序局部性原理感悟
查看>>
UIView 动画进阶
查看>>
ROS机器人程序设计(原书第2版)1.4.7 在BeagleBone Black中安装rosinstall
查看>>
Spring如何处理线程并发
查看>>
linux常用命令(用户篇)
查看>>
获取组件的方式(方法)
查看>>
win2008 server_R2 自动关机 解决
查看>>
我的友情链接
查看>>