`
helpbs
  • 浏览: 1210861 次
文章分类
社区版块
存档分类
最新评论

通过WebView实现页面与ANDRIOD客户端的交互

 
阅读更多

为了减少由于手机客户端的变更而造成的客户端反复更新,还是决定采用WebView+页面的展示方式来作为最终的方案。也与一些做手机应用开发的一些朋友咨询过,大概也是采用类似的思路。

采用WebView的方式有个比较关键的问题需要解决,就是页面与Andriod客户端进行交互,只有实现交互才可以更好的控制手机客户端与web服务器间的通讯,进行请求,应答的加密、压缩等等。

还是老办法,在google上百度一下,一切就是那么简单。引用下面一段代码,看一下就明白了

看我们的html文档:

Html代码

<html>

<script language="javascript">

/* This function is invoked by the activity */

function wave() {

alert("1");

document.getElementById("droid").src="android_waving.png";

alert("2");

}

</script>

<body>

<!-- Calls into the javascript interface for the activity -->

<a onClick="window.demo.clickOnAndroid()"><div style="width:80px;

margin:0px auto;

padding:10px;

text-align:center;

border:2px solid #202020;" >

<img id="droid" src="android_normal.png"/><br>

Click me!

</div></a>

</body>

</html>

再看我们的java 代码。

Java代码

public class WebViewDemo extends Activity {

private static final String LOG_TAG = ”WebViewDemo”;

private WebView mWebView;

private Handler mHandler = new Handler();

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

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

WebSettings webSettings = mWebView.getSettings();

webSettings.setSavePassword(false);

webSettings.setSaveFormData(false);

webSettings.setJavaScriptEnabled(true);

webSettings.setSupportZoom(false);

mWebView.setWebChromeClient(new MyWebChromeClient());

mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), ”demo”);

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

}

final class DemoJavaScriptInterface {

DemoJavaScriptInterface() {

}

/**

* This is not called on the UI thread. Post a runnable to invoke

* loadUrl on the UI thread.

*/

public void clickOnAndroid() {

mHandler.post(new Runnable() {

public void run() {

mWebView.loadUrl(“javascript:wave()”);

}

});

}

}

/**

* Provides a hook for calling ”alert” from javascript. Useful for

* debugging your javascript.

*/

final class MyWebChromeClient extends WebChromeClient {

@Override

public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

Log.d(LOG_TAG, message);

result.confirm();

return true;

}

}

}

仔细分析一下,核心就下面两句代码:

在java中应用WebView的addJavascriptInterface方法,建立java实例与javascript对象之间的映射。如下:

mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), ”demo”);

然后再javascript中通过window.demo直接进行java对象的访问。

其实,当我们看到这些方法的时候,只能感叹google的强悍!

转载自:http://softhood.net/cn/2010/06/30/

分享到:
评论
1 楼 fengpengfei8910 2012-12-19  
兄弟 不知道你做出来没

相关推荐

    WinForm下WebView2实现JS与C#交互Demo

    本示例“WinForm下WebView2实现JS与C#交互Demo”就展示了如何在C#中使用WebView2控件来实现JavaScript与C#之间的双向通信。 首先,确保已安装Microsoft Edge WebView2 SDK。可以通过NuGet包管理器安装`Microsoft....

    Android WebView中客户端与JavaScript的基本交互

    本文将详细讲解如何在Android的WebView中实现客户端(Java代码)与JavaScript的基本交互,使得两者能够相互调用方法,共享数据。 首先,我们需要在AndroidManifest.xml中为应用添加Internet权限,这是加载网络内容...

    Android WebView与JavaScript交互实现Web App

    在这个主题中,我们将深入探讨如何在Android中加载assets目录下的HTML文件,并通过WebView实现与JavaScript的交互。 首先,我们要了解`WebView`的基本用法。在Android布局文件中,我们添加一个WebView组件: ```...

    webviewapp js也客户端的交互以及视频的在线播放.rar

    本教程将深入探讨如何在WebviewAPP中实现JavaScript与客户端的交互,以及如何利用VideoView进行视频的在线播放。 首先,让我们详细了解一下Webview。Webview是Android SDK中的一个类,它提供了一个可以嵌入到...

    webview中java与js安全交互

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,并实现Java与JavaScript之间的交互。这种交互能力使得我们可以利用Web技术来增强原生应用的功能,同时保持了良好的用户体验。...

    (uniapp框架)手动封装webview页面与App交互sdk

    在这个特定的场景中,我们关注的是如何手动封装一个Webview页面与App的交互SDK,以便实现H5页面与原生App之间的通信。这个过程涉及到的关键技术包括uniApp的API调用、JavaScript接口(JSSDK)的构建以及事件的处理。...

    WebView实现引导页面

    此外,还可以利用JavaScript与Java之间的交互来实现更复杂的逻辑,比如点击按钮跳转到下一页或关闭引导页面。为此,我们需要实现WebViewClient的shouldOverrideUrlLoading方法: ```java webView.setWebViewClient...

    QML WebView 与 HTML简单交互

    通过 runJavaScript 实现 QML WebView 与 HTML的简单交互。对应博文 https://blog.csdn.net/weixin_43810973/article/details/84950203

    Android中Webview与原生界面交互及二维码扫描功能实现

    在Android应用开发中,WebView是一个非常重要的组件,它允许我们加载和显示网页内容,甚至可以与原生界面进行交互,实现更加丰富的功能。本项目"Android中Webview与原生界面交互及二维码扫描功能实现"就是一个很好的...

    IOS WebView与JavaScript交互实现Web App

    接下来,我们要讨论的是如何实现WebView与JavaScript的交互。在iOS中,`UIWebView`提供了两个主要的方法来实现这一功能:`stringByEvaluatingJavaScriptFromString:`和`addScriptMessageHandler:name:`。 1. `...

    Andorid webview和js的交互

    总的来说,Android WebView与JavaScript的交互为开发者提供了一个灵活的开发环境,它允许混合使用原生和Web技术,实现快速且高效的移动应用开发。合理利用`WebViewClient`、`WebChromeClient`、`...

    解决RN 的 webview 组件不支持android客户端上传图片文件问题

    然而,由于RN的Webview与原生Android客户端之间的交互存在一些限制,可能导致在Android平台上无法通过Webview组件上传图片文件。本篇文章将深入探讨这个问题,并提供解决方案。 首先,我们要明白问题的根源。在...

    webview 监听页面显示事件

    通过WebView,我们可以展示HTML、CSS和JavaScript等Web技术构建的页面,同时也可以与原生应用进行交互。本文将深入探讨如何监听WebView中的页面显示事件,以便在特定时刻执行相应的操作。 首先,我们需要了解...

    鸿蒙webview的使用和JS交互.zip

    在鸿蒙系统(HarmonyOS)的开发过程中,...通过以上步骤,开发者可以在鸿蒙系统应用中有效地使用Webview,并实现与JavaScript的双向交互。结合HarmonyOS提供的其他组件和服务,可以构建出既美观又功能丰富的应用程序。

    ios-webView与js的交互.zip

    本资料“ios-webView与js的交互.zip”主要探讨了如何在iOS应用中实现WebView与JavaScript的有效通信。 首先,我们来看一下UIWebView。在早期的iOS版本中,UIWebView是开发者最常用的WebView组件。通过UIWebView的`...

    解决react-native 的 webview 组件不支持android客户端上传图片文件问题

    在这个库中,我们可以通过实现`injectJavaScript`方法来注入自定义的JavaScript代码,从而与原生代码进行交互。 以下是一个基本的步骤来实现图片上传功能: 1. **安装`react-native-webview`**:首先,确保已经...

    微信小程序-小程序与webview交互-Webview.rar

    小程序与Webview的交互是实现混合开发的关键技术,它允许小程序和Web页面之间进行数据传递和事件通信。这一特性对于那些希望将已有的H5网站接入到微信小程序,或者利用H5的开发便利性来增强小程序功能的开发者来说...

    webview与js交互demo

    在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容,并且可以实现JavaScript与原生代码的交互。这个“webview与js交互demo”就是专门为了展示这种交互机制的一个实例。在该示例...

    android不使用webview与js交互

    在Android开发中,Webview通常被用来加载网页内容并实现应用程序与网页之间的交互。然而,有时我们可能有需求在不依赖Webview的情况下实现Android应用与JavaScript的交互。本文将深入探讨这种非Webview方式的交互...

Global site tag (gtag.js) - Google Analytics