Android WebView Java与Js通信

简介: 1.Activity 中 事件修改 webview中内容 2.webview中事件修改activity中的内容 3.webview中的事件,响应js函数 主要代码实现:  @SuppressLint("JavascriptInterface") public class MainActivity extends Activity { private static


1.Activity 中 事件修改 webview中内容

2.webview中事件修改activity中的内容

3.webview中的事件,响应js函数


主要代码实现: 

@SuppressLint("JavascriptInterface") public class MainActivity extends Activity {

    private static final String TAG="LocalBrowser";
    private final Handler handler=new Handler();
    private WebView webView;
    private TextView textView;
    private Button button;
    
    private class AndroidBridge //这个类中提供各种js可调用的方法。
    {
        public void callAndroid(final String arg)
        {
            handler.post(new Runnable(){
                public void run()
                {
                    Log.d(TAG,"calAndroid("+arg+")");
                    textView.setText(arg);
                }
            });
        }
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        webView=(WebView)findViewById(R.id.web_view);
        textView=(TextView)findViewById(R.id.text_view);
        button=(Button)findViewById(R.id.button);
        
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new AndroidBridge(), "android"); //将那个实例化的函数类设置为”android"的js接口。
        //主要处理解析,渲染网页等浏览器做的事情
        webView.setWebChromeClient(new WebChromeClient()
        {
            //(WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出) 
            @Override
            public boolean onJsAlert(WebView view, String url, String message,
                    JsResult result) {
                
                Log.d(TAG,"onJsAlert("+view+","+url+","+message+","+result+")");
                Toast.makeText(MainActivity.this, message, 3000).show();
                result.confirm();
                return true;
            }
            
        });//设置可以被java截获的js事件。

        //通过这里切换 assets 中的 html文件 
        webView.loadUrl("file:///android_asset/index.html");
        button.setOnClickListener(new OnClickListener() {
            
            public void onClick(View v) {
                Log.d(TAG,"onClick("+v+")");
                webView.loadUrl("javascript:callJS('hello from android')");  //java调用js的函数
            }
        });
    }
    
}


js html1文件   

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
		<title>hello world</title>
		<script type="text/javascript">
			function helloworld() {
				alert("hello world!")
			}
			
		</script>
	</head>

	<body>
		This is a show “helloworld” default page,your can click this button
		<button onclick="helloworld()">click me!</button> to show a "hello world" message!
	</body>

</html>


项目源码地址:http://download.csdn.net/detail/flyingsir_zw/9490172



目录
相关文章
|
3天前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
28 10
|
2天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
【5月更文挑战第4天】本文介绍了如何使用JavaScriptExecutor在自动化测试中实现元素高亮显示。通过创建并执行JS代码,可以改变元素的样式,例如设置背景色和边框,以突出显示被操作的元素。文中提供了一个Java示例,展示了如何在Selenium中使用此方法,并附有代码截图和运行效果展示。该技术有助于跟踪和理解测试过程中的元素交互。
8 0
|
3天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
10 0
|
4天前
|
Java 物联网 Linux
Android硬件通信之 串口通信
Android硬件通信之 串口通信
7 0
|
7天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能对比
【5月更文挑战第4天】在移动开发的世界中,性能一直是衡量应用质量的重要指标。随着Kotlin的兴起,许多Android开发者开始考虑是否应该从传统的Java迁移到Kotlin。本文通过深入分析两者在Android平台上的性能差异,帮助开发者理解Kotlin在实际项目中的表现,并提供选择编程语言时的参考依据。
20 5
|
10天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【5月更文挑战第1天】 在移动开发的世界中,性能优化始终是开发者关注的焦点。随着Kotlin的兴起,许多团队和开发者面临着一个选择:是坚持传统的Java语言,还是转向现代化、更加简洁的Kotlin?本文通过深入分析和对比Kotlin与Java在Android应用开发中的性能表现,揭示两者在编译效率、运行速度和内存消耗等方面的差异。我们将探讨如何根据项目需求和团队熟悉度,选择最适合的语言,以确保应用的高性能和流畅体验。
|
11天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第30天】在Android开发领域,Kotlin作为一种现代化的编程语言,因其简洁性和功能性受到了开发者的广泛欢迎。尽管与传统的Java相比,Kotlin提供了诸多便利,但关于其性能表现的讨论始终未息。本文将深入分析Kotlin和Java在Android平台上的性能差异,通过实际测试数据揭示两种语言在编译效率、运行速度以及内存占用方面的具体表现,并探讨如何利用Kotlin的优势来提升Android应用的整体性能。
|
12天前
|
编解码 JavaScript 前端开发
【专栏】介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例
【4月更文挑战第29天】本文介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例。Base64编码将24位二进制数据转换为32位可打印字符,用“=”作填充。文中展示了各语言的编码解码代码,帮助开发者理解并应用于实际项目。
|
15天前
|
Java 测试技术 Android开发
构建高效Android应用:探究Kotlin与Java的性能对比
【4月更文挑战第26天】 在移动开发领域,性能优化一直是开发者追求的重要目标。随着Kotlin的兴起,其在Android平台上的应用逐渐增多,但关于Kotlin与Java在性能方面的对比,社区中仍存在诸多讨论。本文通过实际的性能测试,分析比较了使用Kotlin和Java编写的Android应用在多个维度上的运行效率,旨在为开发者提供一个明确的性能参考,帮助他们在选择编程语言时做出更加明智的决策。
|
16天前
|
JavaScript 前端开发 Oracle
java和JavaScript的区别
java和JavaScript的区别
11 3