今天介绍一下,Android中Webview与JavaScript的交互,首先是在布局文件里添加webview控件:

  1. <WebView
  2. android:id="@+id/webview"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent" />

然后是在manifest里添加权限:

  1. <uses-permission android:name="and

要是webview能够与JavaScript交互,首先需要webview要启用JavaScript:

  1. WebSettings webSettings = myWebView.getSettings();
  2. webSettings.setJavaScriptEnabled(true);

然后创建JavaScript的接口:

  1. public class WebAppInterface {
  2. Context mContext;
  3. /** Instantiate the interface and set the context */
  4. WebAppInterface(Context c) {
  5. mContext = c;
  6. }
  7. /** Show a toast from the web page */
  8. @JavascriptInterface
  9. public void showToast(String toast) {
  10. Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
  11. }
  12. }

给webview添加JavaScript接口:

  1. myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");

本地JavaScript文件:

  1. <input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
  2. <script type="text/javascript">
  3. function showAndroidToast(toast) {
  4. Android.showToast(toast);
  5. }
  6. </script>

整个代码如下:

  1. public class MainActivity extends Activity {
  2. private WebView myWebView;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. myWebView = (WebView) findViewById(R.id.webview);
  8. WebSettings webSettings = myWebView.getSettings();
  9. webSettings.setJavaScriptEnabled(true);
  10. myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
  11. ProcessWebString();
  12. }
  13. public class WebAppInterface {
  14. Context mContext;
  15. /** Instantiate the interface and set the context */
  16. WebAppInterface(Context c) {
  17. mContext = c;
  18. }
  19. /** Show a toast from the web page */
  20. @JavascriptInterface
  21. public void showToast(String toast) {
  22. Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
  23. }
  24. }
  25. private void ProcessWebString() {
  26. // 加载 asset 文件
  27. String tpl = getFromAssets("web_tpl.html");
  28. myWebView.loadDataWithBaseURL(null, tpl, "text/html", "utf-8", null);
  29. }
  30. /*
  31. * 获取html文件
  32. */
  33. public String getFromAssets(String fileName) {
  34. try {
  35. InputStreamReader inputReader = new InputStreamReader(
  36. getResources().getAssets().open(fileName));
  37. BufferedReader bufReader = new BufferedReader(inputReader);
  38. String line = "";
  39. String Result = "";
  40. while ((line = bufReader.readLine()) != null)
  41. Result += line;
  42. return Result;
  43. } catch (Exception e) {
  44. e.printStackTrace();
  45. }
  46. return "";
  47. }
  48. }

运行效果:

Android WebView JavaScript交互的更多相关文章

  1. android webview js交互 第一节 (java和js交互)

    转载请注明出处         挺帅的移动开发专栏  http://blog.csdn.net/wangtingshuai/article/details/8631835        在androi ...

  2. Android混合开发之WebView与Javascript交互

    前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...

  3. Android总结之WebView与Javascript交互[转]

    Android总结之WebView与Javascript交互   前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.We ...

  4. Android Webview 和Javascript交互,实现Android和JavaScript相互调用

    在Android的开发过程中.遇到一个新需求.那就是让Java代码和Javascript代码进行交互.在IOS中实现起来很麻烦.而在Android中相对来说容易多了.Android对这种交互进行了很好 ...

  5. Android WebView中的JavaScript代码使用

    在WebView中使用JavaScript 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript. 一旦使能之后,你也可以自己创建接口在你的应用和Java ...

  6. [android] WebView与Js交互

    获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置j ...

  7. Android与javaScript的交互

    WebView与js的交互包含两方面,一是在html中通过js调用java代码:二是在安卓java代码中调用js. 一.html中通过js调用java代码 js中调用java代码其实就记住一点,Web ...

  8. Android WebView使用与JavaScript使用

    WebView基本使用 WebView是View的一个子类,可以让你在activity中显示网页. 可以在布局文件中写入WebView:比如下面这个写了一个填满整个屏幕的WebView: <?x ...

  9. 重新想象 Windows 8.1 Store Apps (80) - 控件增强: WebView 之基本应用, POST 数据, 与 JavaScript 交互

    [源码下载] 重新想象 Windows 8.1 Store Apps (80) - 控件增强: WebView 之基本应用, POST 数据, 与 JavaScript 交互 作者:webabcd 介 ...

随机推荐

  1. 基于bootstrap面板的类别多选栏

    1.html部分 <div class="panel panel-default"> <div class="panel-heading"&g ...

  2. SQL Server 2005恢复数据库详细图文教程

    不少需要用到sql2005的程序,有很多新手还是会操作,这里写个详细的图文教程送个菜鸟们,高手请飘过.适用于独立主机的朋友使用,如果你还没安装,请按照这个教程来安装 SQL Server 2005图文 ...

  3. Android界面的View以及ViewGroup的区别

    因为这个问题会经常成为面试的热点,所以我们来谈谈View以及ViewGroup的区别. 先看看View及ViewGroup类关系    Android View和ViewGroup从组成架构上看,似乎 ...

  4. C语言 打印圣诞树

    再回首<C语言编程基础>,其中不少当年老师出的题,做完后稍微做了下修改,可以输入任意行数来打印圣诞树,行数越大,树越大,当然显示器也要越大,不然就折行了. 纯粹练手跟加强记忆的东西,做个记 ...

  5. nginx介绍及安装

    nginx(Engine x)      静态的www软件    特点:        配置简单        高并发,1-2w,基于异步IO模型(epoll,kqueue)        占用资源少 ...

  6. 24、Javascript BOM

    BOM(Browser Object Model)浏览器对象模型,一组浏览器提供的API. window对象 window对象表示当前浏览器的窗口,是Javascript的顶级对象,所有创建的对象.函 ...

  7. CI框架篇之模型篇--直接操作(2)

    在CI里面对数据库的操作有两种形式,一种是直接通过最原始的sql语句操作 一种则是通过CI里面的AR模型进行操作.两种操作各有千秋,应当有机的结合 现在讲解第一种操作的方式: 装载数据路操作类后就能够 ...

  8. Visual Studio的性能测试工具

    vs果然是宇宙最强大的IDE,这句话我经常挂在嘴边,反正觉得它挺强大 整个听技术经理说性能测试,然后我就觉得宇宙最强大的IDE应该 也有测试工具吧,那么我就百度了一下,又看看vs的选项,果然真有一个性 ...

  9. SVM技法

    PLA不管胖瘦,SVM喜欢胖的 fewer dichotomies=> small VC 演算法的VC dimension shatter 掉3个点 如果限制胖瘦,两个点都shatter不掉 喜 ...

  10. CSAPP Lab2: Binary Bomb

    著名的CSAPP实验:二进制炸弹 就是通过gdb和反汇编猜测程序意图,共有6关和一个隐藏关卡 只有输入正确的字符串才能过关,否则会程序会bomb终止运行 隐藏关卡需要输入特定字符串方会开启 实验材料下 ...