android 调用js,js调用android

1.main.xml


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    

    <TextView   

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="Welcome to Mr Wei‘s Blog."

        /> 

    <WebView 

        android:id="@+id/webview"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

    /> 

    <Button 

        android:id="@+id/button"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="Change the webview content"

    /> 

</LinearLayout>

2.demo.html


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<html

    <mce:script language="javascript"><!-- 

   

        function fillContent(){ 

            document.getElementById("content").innerHTML =  

                 "This Content is showed by Android invoke Javascript function."; 

        

      

// --></mce:script>   

  <body

    <p><a onClick="window.demo.startMap()" href="">Start GoogleMap</a></p

    <p id="content"></p

    <p>A Demo ----Android and Javascript invoke each other.</p

    <p>Author:Frankiewei</p

  </body

</html>

3.WebViewDemo.java


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

package com.tutor.webwiewdemo;

import android.app.Activity;

import android.content.ComponentName;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.widget.Button;

public class WebViewDemo extends Activity {

    private WebView mWebView;

    private Button mButton;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        setupViews();

    }

    //初始化

    private void setupViews() {

        mWebView = (WebView) findViewById(R.id.webview);

        WebSettings mWebSettings = mWebView.getSettings();

        //加上这句话才能使用javascript方法

        mWebSettings.setJavaScriptEnabled(true);

        //增加接口方法,让html页面调用

        mWebView.addJavascriptInterface(new Object() {

            //这里我定义了一个打开地图应用的方法

            public void startMap() {

                Intent mIntent = new Intent();

                ComponentName component = new ComponentName(

                        "com.google.android.apps.maps",

                        "com.google.android.maps.MapsActivity");

                mIntent.setComponent(component);

                startActivity(mIntent);

            }

        }, "demo");

        //加载页面

        mWebView.loadUrl("file:///android_asset/demo.html");

        mButton = (Button) findViewById(R.id.button);

        //给button添加事件响应,执行JavaScript的fillContent()方法

        mButton.setOnClickListener(new Button.OnClickListener() {

            public void onClick(View v) {

                mWebView.loadUrl("javascript:fillContent()");

            }

        });

    }

}

  

           

首界面                                               点击按钮时,html内容改变

MainActivity.java


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

package com.example.jsdemo;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.webkit.WebSettings;

import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    private WebView wView;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

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

        wView.loadUrl("file:///android_asset/demo1.html");

        WebSettings webSettings = wView.getSettings();

        //①设置WebView允许调用js

        webSettings.setJavaScriptEnabled(true);

        webSettings.setDefaultTextEncodingName("UTF-8");

        //②设置支持js调用java

        wView.addJavascriptInterface(new AndroidAndJSInterface(),"Android"");

    }

 class AndroidAndJSInterface{

        @JavascriptInterface

        public void showToast(){

            Toast.makeText(MainActivity.this"我被js调用了", Toast.LENGTH_SHORT).show();

        }

    }

}

注意:解决该WebView.addJavascriptInterface接口不起作用的两种办法

①针对版本改成16

②在JavaScript接口类的方法加上@JavascriptInterface注解

2.JavaScript调用Java对象示例

demo1.html


1

<input type="button" value="点击Android被调用" onclick="window.Android.showToast()" />

  

原文地址:https://www.cnblogs.com/aibabel/p/11101759.html

时间: 2024-11-07 01:39:34

android 调用js,js调用android的相关文章

如何在android平台上使用js直接调用Java方法[转]

转载自:http://www.cocos.com/docs/html5/v3/reflection/zh.html #如何在android平台上使用js直接调用Java方法 在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parame

【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法

在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...) 在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回

android WebView java与js相互调用

android webView js 使用1.js调用java    1.1 js代码    <script type="text/javascript">        function call(){            window.androidInterface.call('02585818031');        }    </script> 1.2.java代码    package com.example.webview;    import

android 的webview调用php服务器js , js 调用Android的webview

最近项目的需求: Android通过webView调用php的数据 , 这时候是需要整理webview和JavaScript之间相互调用的时候了 一. 理清思路: (1) . 双方都是客户端 , 一个是Android , 一个是js( js当然是客户端 , 后面说明) (2) . Android的webview需要支持JavaScript , 即 WebSettings settings = myWebView.getSettings(); settings.setJavaScriptEnabl

[Android]Webview中JS接口调用Java-版本问题

问题: The javascript to java bridge on 2.3 Gingerbread is causing crashes. This is 100% reproducible using the WebViewDemo application from here: http://code.google.com/p/apps-for-android/source/browse/#svn/trunk/Samples/WebViewDemo. Note: The project

cocos js js java互调 (如何在ANDROID平台上使用JS直接调用JAVA)

在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...) 在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回

【Js】调用Android WebView定义的方法总结

先贴代码: package com.example.demowebview; import Android.os.Bundle;import android.os.Handler;import android.app.Activity;import android.webkit.JAVAscriptInterface;import android.webkit.JsResult;import android.webkit.WebChromeClient;import android.webkit

【cocos2d-js官方文档】二十三、如何在IOS平台上使用js直接调用OC方法

在Cocos2d-JS v3.0 RC2中,与Android上js调用Java一样,Cocos2d-JS也提供了在iOS和Mac上js直接调用Objective-C的方法,示例代码如下: var ojb = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....); 在jsb.reflection.callStaticMethod方法中,我们通过传入OC的类名,方法名,参数就可以直接调用OC的静态方法,并且

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

在Android的开发过程中.遇到一个新需求.那就是让Java代码和Javascript代码进行交互.在IOS中实现起来很麻烦.而在Android中相对来说容易多了.Android对这种交互进行了很好的封装.我们可以很简单的用Java代码调用WebView中的js函数.也可以用WebView中的js来调用Android应用中的Java代码. 案例主要包含了: Html中调用Android方法 Android调用JS方法无参数 Android调用JS方法有参数 Android调用JS方法有参数且有

Hybrid App开发模式中, IOS/Android 和 JavaScript相互调用方式

IOS:Objective-C 和 JavaScript 的相互调用 iOS7以前,iOS SDK 并没有原生提供 js 调用 native 代码的 API.但是 UIWebView 的一个 delegate 方法使我们可以做到让 js 需要调用时,通知 native.在 native 执行完相应调用后,可以用stringByEvaluatingJavaScriptFromString 方法,将执行结果返回给 js.这样,就实现了 js 与 native 代码的相互调用.具体让 js 通知 na