Android与JS交互问题

Android通过WebView加载js网页代码两者之间交互

public class MainActivity extends Activity {

private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

webView = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);//支持javascrip必须有
webSettings.setDefaultTextEncodingName("utf-8");
webView.addJavascriptInterface(this, "test");//对应js中的test.xxx,通过该标记来调用Android中的方法

webView.setWebChromeClient(new WebChromeClient() {});//要加上这句,否则部分机型无法弹出窗口

webView.loadUrl("http://192.168.3.4:8080/WebViewTest/test.html");//通过tomcat启动一个网页,当然本地的也行
//webView.loadUrl("file:///android_asset/test.html");//放到assets目录下即可
}

/**
 * js调用该方法
 * @param msg
 */
@JavascriptInterface
public void helloAndroid(String msg){

    Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
}

/**
 * 调用js中的方法
 * @param v
 */
public void call(View v){

webView.post(new Runnable() {

        @Override
        public void run() {

                webView.loadUrl("javascript:callJS()");
                Log.v("zd", "callJS");
        }
    });
}
}

//xml布局,只有

<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:orientation="vertical" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="call"
                android:text="Call JS" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2" >
            <WebView
                android:id="@+id/webView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

//js代码,其中通过前面声明的test来引用android中的方法

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<script type="text/javascript">

    function show() {
            test.helloAndroid("text/javascript");//Android是在Android端定义的
    }
    
    function callJS() {
        alert("HelloWebView, i‘m from js: ");
    }
    
</script>

<input type="button" name="提交" value="提交" onclick="show();"></input>

</body>
</html>

时间: 2024-10-10 06:55:28

Android与JS交互问题的相关文章

android 与js交互

android与js交互 // 设置编码 webView.getSettings().setDefaultTextEncodingName("utf-8"); // 支持js webView.getSettings().setJavaScriptEnabled(true); //参数1为传递的android对象,参数2为传递对象的变量名称之后JS中使用变量名进行对对象的操作 webView.addJavascriptInterface(new TestJs(), "testO

(转)Android与js交互实例(附源码)

本文转载于:http://blog.csdn.net/ithomer/article/details/8737999# Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android(

Webview Android与js交互

Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android(Java)代码 4) HTML中js调用Android(Java)代码(带参数) 下面示例总结这四种情况,直接上干货:

android与js交互

首先引用一篇文章,看过这篇文章基本上就明白android大致与js是如何交互的了 Android与HTML+JS交互入门 ----------------------------分割线----------------------------------- 首先要知道js是啥,js就相当于在html内的函数方法,全称为javascript 那么要交互,必然二者要共存于一起,在android中如何打开一个页面,比较常用的方法就是使用一个WebView控件,用它来加载网页 交互也必然是双方的,有来有往

Android与js交互实例

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参

Android 混淆JS交互没反应

-keepattributes *Annotation* -keepattributes *JavascriptInterface* -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } -keepclassmembers class cn.xx.xx.Activity$AppAndroid { public *; } 最重要的 -keep class <包名>.类名$*{ <meth

android 和 js 交互

1.html代码 <script type="text/javascript"> function javacalljs(){ document.getElementById("content").innerHTML = "JAVA调用了JS的无参函数"; } function javacalljswith(arg){ document.getElementById("content").innerHTML = (

Android—android与js交互以及相互传参

Android中可以通过WebView来实现与js的交互,让用户可以在android客户端看到js写的页面,接下来为大家介绍的就是怎样实现此功能: 首先android项目目录下有“assets”文件夹,开发者需要将html文件拷贝到此文件夹下. html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra

项目中Android与Js交互

一.项目涉及的类: DetailCourseMainActivity,HtmlCountMainFragment,HtmlCountFragment,HtmlCountJSInterface,AnswerWebView 二.逐步分析: 1.MainActivity: 1)点击:打开页面 showFragment(HtmlCountMainFragment.class); 2)针对返回键的处理: onBackPressed(): 一般的:super.onBackPressed();return;对