`

利用HTML5开发Android笔记(中篇)

阅读更多

 

资源来自于www.mhtml5.com 杨丰盛老师成都场的PPT分享 一个很简明的demo 可以作为入门基础

学习的过程中做了点笔记 整理如下 虽然内容比较简单 但是数量还是比较多的 所以分了3篇

(上)包括Android设备多分辨率的问题,Android中构建HTML5应用程序基础

(中)包括Android与JS之间的互动,Android处理JS的警告对话框等,Android中的调试

(下)包括本地储存在Android中的应用,地理位置的应用,离线应用的构建

—————————————————————————————— 分割线 ————————————————————————————————————————

进入正题

● Android与JS之间的互相调用交互

WebView默认是禁用JavaScript的,在启用后,就可以在两者间建立接口进行调用

 

	WebView myWebView = (WebView) findViewById(R.id.webview);
	WebSettings webSettings = myWebView.getSettings();
	webSettings.setJavaScriptEnabled(true);

 

(这里的webSetting用处非常大 可以开启很多设置 在之后的本地存储,地理位置等之中都会使用到)

1 在JS中调用Android的函数方法

 

首先 需要在Android程序中建立接口

 

	final class InJavaScript {
        public void runOnAndroidJavaScript(final String str) {
        	handler.post(new Runnable() {
                public void run() { 
                    TextView show = (TextView) findViewById(R.id.textview);
                    show.setText(str);
                }
            });
        }
    }
 

 

 

    //把本类的一个实例添加到js的全局对象window中,
    //这样就可以使用window.injs来调用它的方法
    webView.addJavascriptInterface(new InJavaScript(), "injs");

 

在JavaScript中调用

	function sendToAndroid(){
 		var str = "Cookie call the Android method from js";
 		window.injs.runOnAndroidJavaScript(str);//调用android的函数
	}
	
 

2 在Android中调用JS的方法

 

JS中的方法

	function getFromAndroid(str){
 		document.getElementById("android").innerHTML=str;
	}
 

Android调用该方法

	Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {
         	//调用javascript中的方法
            webView.loadUrl("javascript:getFromAndroid('Cookie call the js function from Android')");
        }
    });
 

3 Android中处理JS的警告,对话框等

在Android中处理JS的警告,对话框等需要对WebView设置WebChromeClient对象

	//设置WebChromeClient
	webView.setWebChromeClient(new WebChromeClient(){
		//处理javascript中的alert
		public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
			//构建一个Builder来显示网页中的对话框
			Builder builder = new Builder(MainActivity.this);
			builder.setTitle("Alert");
			builder.setMessage(message);
			builder.setPositiveButton(android.R.string.ok,
				new AlertDialog.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						result.confirm();
					}
				});
			builder.setCancelable(false);
			builder.create();
			builder.show();
			return true;
		};
		//处理javascript中的confirm
		public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
			Builder builder = new Builder(MainActivity.this);
			builder.setTitle("confirm");
			builder.setMessage(message);
			builder.setPositiveButton(android.R.string.ok,
				new AlertDialog.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						result.confirm();
					}
				});
			builder.setNegativeButton(android.R.string.cancel,
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						result.cancel();
					}
				});
			builder.setCancelable(false);
			builder.create();
			builder.show();
			return true;
		};
			
		@Override
		//设置网页加载的进度条
		public void onProgressChanged(WebView view, int newProgress) {
			MainActivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress * 100);
			super.onProgressChanged(view, newProgress);
		}

		//设置应用程序的标题title
		public void onReceivedTitle(WebView view, String title) {
			MainActivity.this.setTitle(title);
			super.onReceivedTitle(view, title);
		}
	});
 

● Android中的调试

通过JS代码输出log信息

	Js代码: console.log("Hello World");
	Log信息: Console: Hello World http://www.example.com/hello.html :82 
 

在WebChromeClient中实现onConsoleMesaage()回调方法,让其在LogCat中打印信息

	WebView myWebView = (WebView) findViewById(R.id.webview);
	myWebView.setWebChromeClient(new WebChromeClient() {
		public void onConsoleMessage(String message, int lineNumber, String sourceID) {
			Log.d("MyApplication", message + " -- From line "
				+ lineNumber + " of "
				+ sourceID);
		}
	});

以及

	WebView myWebView = (WebView) findViewById(R.id.webview);
	myWebView.setWebChromeClient(new WebChromeClient() {
		public boolean onConsoleMessage(ConsoleMessage cm) {
			Log.d("MyApplication", cm.message() + " -- From line "
				+ cm.lineNumber() + " of "
				+ cm.sourceId() );
			return true;
		}
	});
 

*ConsoleMessage 还包括一个 MessageLevel 表示控制台传递信息类型。 您可以用messageLevel()查询信息级别,以确定信息的严重程度,然后使用适当的Log方法或采取其他适当的措施。

 

后面的内容在下篇中继续

 

 

3
6
分享到:
评论

相关推荐

    android 开发笔记

    "Android开发笔记"是由real6410公司为开发者提供的一份宝贵的资源,特别针对real6410开发板进行优化,旨在帮助开发者快速提升Android应用开发技能。这份资料包含了从基础知识到实战经验的全方位指导。 首先,"read ...

    基于Android Studio开发的笔记APP.rar

    【Android Studio开发笔记APP详解】 Android Studio是Google官方推荐的Android应用开发集成开发环境(IDE),它提供了丰富的功能,使得Android应用开发变得更加高效和便捷。本教程将基于Android Studio,详细解析一...

    Android开发教程笔记完全版 pdf

    这份"Android开发教程笔记完全版"涵盖了Android开发的基础到高级主题,旨在帮助开发者全面理解并掌握Android应用的构建过程。 一、Android系统概述 Android是由Google主导的开源操作系统,基于Linux内核。它的开放...

    Android开发教程+笔记 Android开发教程+笔记

    Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发...

    最新最全的Android开发笔记

    这份"最新最全的Android开发笔记"涵盖了Android应用开发的各个方面,旨在帮助开发者提升技能,跟上快速发展的Android生态系统。 笔记首先介绍了Android开发的基础,包括安装Android Studio,这个强大的集成开发环境...

    Android开发笔记全集

    《Android开发笔记全集》是一份综合性的学习资源,涵盖了Android应用开发的多个核心领域,旨在帮助开发者系统地掌握Android平台的开发技能。这个压缩包包含的文件名为“Android开发笔记”,暗示着它可能是一个系列的...

    新版android开发教程 笔记

    新版Android开发教程&笔记--基础入门一 新版Android开发教程&笔记--基础入门二 新版Android开发教程&笔记三--环境搭建与解析 新版Android开发教程&笔记四--Dalvik ADB 新版Android开发教程+笔记五--模拟器、应用1、2...

    Android开发学习笔记

    ### Android开发学习笔记 #### Button按钮的实现与交互 在Android开发中,`Button`控件是最常用的用户界面元素之一,用于触发特定的操作或事件。本文档将详细讲解如何创建并自定义一个简单的按钮,并设置点击事件...

    [电子书][Android]Android开发教程笔记完全版.zip

    【Android开发教程笔记完全版】是一份全面的Android开发学习资料,旨在帮助新手小白和有一定经验的程序员深入理解和掌握Android应用开发技术。这份资源包含了从基础到进阶的多个层次的知识点,对于想要踏入Android...

    《Android应用开发揭秘》读书笔记

    《Android应用开发揭秘》读书笔记不仅是一份个人学习历程的记录,更是一部深入浅出的Android开发指南。本书籍及笔记覆盖了从基础知识到高级应用的广泛内容,为初学者和有经验的开发者提供了宝贵的资源。 ### ...

    Android驱动开发笔记

    ### Android驱动开发笔记概览 #### 1. JDK环境配置 在Android驱动开发过程中,通常需要一个良好的开发环境来支持项目的进行。文档中的片段显示了如何设置JDK(Java Development Kit)环境变量。这部分内容涉及到的...

    全网最全Android开发笔记.zip

    【Android开发笔记】是一部全面覆盖Android开发核心技术与实践的综合资料,旨在帮助开发者从零基础到精通,深入了解Android系统的工作原理以及应用开发的各种技巧。笔记包含了大量的实例代码、技术解析和实战经验,...

    新版Android开发教程和笔记

    ARM上面运行Android系统,这里是开发教程和笔记。具体的内容包括: Professional_Android_App.pdf 新版Android开发教程&笔记--基础入门一.pdf 新版Android开发教程&笔记--基础入门二.pdf 新版Android开发教程&...

    Android开发教程笔记完全版.rar

    这份"Android开发教程笔记完全版"的压缩包文件包含了全面的学习资料,对于初学者和有一定经验的开发者来说,都是宝贵的资源。下面我们将深入探讨其中可能涵盖的知识点。 1. **Android系统架构**:Android系统分为...

    Android 开发教程 新版Android开发教程&笔记

    新版Android开发教程&笔记一--基础入门1 新版Android开发教程&笔记二--基础入门2 新版Android开发教程&笔记三--环境搭建与解析 新版Android开发教程&笔记四--Dalvik ADB 新版Android开发教程&笔记五--模拟器、应用1...

    android开发笔记5

    "Android开发笔记5"专注于Real6410开发板的使用,旨在帮助开发者快速提升Android技术能力。本文将深入解析笔记中的关键知识点,包括Android的基础UI编程。 首先,让我们关注"read me.doc"。这个文档通常包含了项目...

    李兴华Android开发实战经典-PPT课件-笔记

    《李兴华Android开发实战经典》是一门深入探讨Android应用开发的课程,由知名讲师李兴华老师主讲。这门课程旨在帮助学员全面掌握Android应用的开发技能,从基础到高级,涵盖了一系列实践性强的知识点。课程资料包括...

Global site tag (gtag.js) - Google Analytics