Android:WebView与Javascript交互(相互调用参数、传值)

Android中可以使用WebView加载网页,同时Android端的java代码可以与网页上的javascript代码之间相互调用。

效果图:


(一)Android部分:

布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical"
    android:padding="8dp"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:id="@+id/input_et"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:layout_weight="1"
            android:hint="请输入信息" />

        <Button
            android:text="Java调用JS"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="sendInfoToJs" />
    </LinearLayout>

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
Activity代码:
/**
 * Android WebView 与 Javascript 交互。
 */
public class MainActivity extends ActionBarActivity {
    private WebView webView;

    @SuppressLint({"SetJavaScriptEnabled", "AddJavascriptInterface"})
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById(R.id.webView);

        webView.setVerticalScrollbarOverlay(true);
        //设置WebView支持JavaScript
        webView.getSettings().setJavaScriptEnabled(true);

        String url = "http://192.168.1.27/js_17_android_webview.html";
        webView.loadUrl(url);

        //在js中调用本地java方法
        webView.addJavascriptInterface(new JsInterface(this), "AndroidWebView");

        //添加客户端支持
        webView.setWebChromeClient(new WebChromeClient());
    }

    private class JsInterface {
        private Context mContext;

        public JsInterface(Context context) {
            this.mContext = context;
        }

        //在js中调用window.AndroidWebView.showInfoFromJs(name),便会触发此方法。
        @JavascriptInterface
        public void showInfoFromJs(String name) {
            Toast.makeText(mContext, name, Toast.LENGTH_SHORT).show();
        }
    }

    //在java中调用js代码
    public void sendInfoToJs(View view) {
        String msg = ((EditText) findViewById(R.id.input_et)).getText().toString();
        //调用js中的函数:showInfoFromJava(msg)
        webView.loadUrl("javascript:showInfoFromJava('" + msg + "')");
    }
}
(二)网页代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-cn" />

<title>Android WebView 与 Javascript 交互</title>
<head>
  <style>
  body {background-color:#e6e6e6}

  .rect
  {
    color:white;
    font-family:Verdana, Arial, Helvetica, sans-serif;
    font-size:16px;
    width:100px;
    padding:6px;
    background-color:#98bf21;
    text-decoration:none;
    text-align:center;
    border:none;
    cursor:pointer;
  }

  .inputStyle {font-size:16px;padding:6px}
  </style>
</head>

<body>
  <p>测试Android WebView 与 Javascript 交互</p>
  <input id = "name_input" class = "inputStyle" type="text"/>
  <a class = "rect" onclick="sendInfoToJava()">JS调用Java</a>

  <script>
  function sendInfoToJava(){
    //调用android程序中的方法,并传递参数
    var name = document.getElementById("name_input").value;
    window.AndroidWebView.showInfoFromJs(name);
  }

  //在android代码中调用此方法
  function showInfoFromJava(msg){
    alert("来自客户端的信息:"+msg);
  }
  </script>

</body>
</html>

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
网易新闻应用源码完整版客户端+服务端源码,仿网易新闻,android端+服务器端 1,为了加快访问速度,服务器端数据是写死了的,数据太多的就复制粘贴了,不是 数据库 查询的 2,新闻图片下载代码注释掉了(网速给力的可以放开注释),显示的是默认图片  3.运行时记得改android端Constantvalues类里面的IP地址 4,  UI结合使用的挺不错的等。 源码下载: http://code.662p.com/view/5929.html           详细说明: http://android.

在应用程序中播放声音 - 2015-05-16 11:05:02

NSString *path = nil; path = [[NSBundle mainBundle] pathForResource: @"occasion" ofType: @"aiff" ]; NSURL * url = [NSURL URLWithString:path];         SystemSoundID soundID;                 AudioServicesCreateSystemSoundID(( __bridge CFURLRef)url, soundID)
U3D开发性能优化笔记: .NGUI: Atlas优化; .poolmanager使用; .控制同屏drawcall次数; .SHADER优化顶点和运算; .合批与动态剔除; .逻辑部分优化;(如看到不到的物件不要做公告板位置运算,不要播放animation) .物理帧UPDATE降低; .关闭垂直同步,降低图片采样,声音预加载 方案 等等 。。; .模型骨骼不要超过32根; .贴图不要太大,建议512 *512 以下; .少用 CUTOFF和 aplha混合; .3D游戏效率基本原则就是费内存省CPU

cocos2dx加libevent库 - 2015-05-16 11:05:02

路径: $path = cocos2dx/platform/third_party 1.win32    将生成的libevent_core.lib,libevent_extras.lib放到$path/win32/libraries中    头文件event2和event-config.h 放到$path/win32/libevent中    VS中设置include path和 add lib   2.ios    生成IOS平台的库文件(libevent_core.a,libevent_extra.
00、Linux开发环境搭建与使用1——Linux简史 01、Linux开发环境搭建与使用2——Linux系统(ubuntu)安装方案 02、Linux开发环境搭建与使用3——通过虚拟机安装系统(ubuntu) 03、Linux开发环境搭建与使用4——ubuntu更新设置 04、Linux开发环境搭建与使用4——Linux必备软件之Samba 05、Linux开发环境搭建与使用5——Linux必备软件之SSH 06、Linux开发环境搭建与使用6——ubuntu如何设置IP 07、Linux开发环境搭建与
马上毕业了,前段时间一直忙自己的毕业设计和毕业论文(蛋疼连着菊花疼),做的是一个android音乐播放器,今天特意抽出里面的一块功能来凑这篇博客--歌词的显示。 看看QQ音乐,歌词显示略屌,可惜我们的LRC文件并不能做到词的同步,只能做到行的同步,所以,退而求之,今天的歌词空间只是同步行,那他有什么功能呢? 歌词同步就不说了,切换滑动效果是我后加上的,因为我看着一行行的切换太过生硬。 下面开始进入主题。 1、首先我们来看看如何使用,控件的使用很简单,可以在xml中配置使用: org.loader.lite
1、respondsToSelector 用来判断某一个方法时候实现(下面的代码意思:如果baseAPIdidStartRequest这个方法实现了,那么就去调用,防止出现异常) if  ([ self .delegate  respondsToSelector : @selector (baseAPIdidStartRequest:)])  {           [ self .delegate  baseAPIdidStartRequest : self ];   }   2、isKindOfCla
   1.首先 android.mk LOCAL_PATH := $(call my-dir) # ============================================================ include $(CLEAR_VARS) LOCAL_SRC_FILES :=  java/com/xxx/xxx/xxx.java \                                             java/com/xxx/xxx/xxx2.java   
转载请注明出处: http://blog.csdn.net/allen315410/article/details/42914501 概述        今天这篇博客将记录一些关于DrawerLayout的基本用法,我想关于DrawerLayout的用法也许有不少不够了解,这也是比较正常的事情,因为DrawerLayout作为Android组件是Google后来在android中添加的,在android.support.v4包下。那么,DrawerLayout是一个怎么的组件呢?我们知道,当我们使用Andr

RotateCard(自定义的旋转view) - 2015-05-16 10:05:10

item被点击时有放大的动画效果,快速滑动后手指放开会有余旋。 下载地址: http://www.devstore.cn/code/info/812.html 运行截图: