为了减少由于手机客户端的变更而造成的客户端反复更新,还是决定采用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/
分享到:
相关推荐
本示例“WinForm下WebView2实现JS与C#交互Demo”就展示了如何在C#中使用WebView2控件来实现JavaScript与C#之间的双向通信。 首先,确保已安装Microsoft Edge WebView2 SDK。可以通过NuGet包管理器安装`Microsoft....
本文将详细讲解如何在Android的WebView中实现客户端(Java代码)与JavaScript的基本交互,使得两者能够相互调用方法,共享数据。 首先,我们需要在AndroidManifest.xml中为应用添加Internet权限,这是加载网络内容...
在这个主题中,我们将深入探讨如何在Android中加载assets目录下的HTML文件,并通过WebView实现与JavaScript的交互。 首先,我们要了解`WebView`的基本用法。在Android布局文件中,我们添加一个WebView组件: ```...
本教程将深入探讨如何在WebviewAPP中实现JavaScript与客户端的交互,以及如何利用VideoView进行视频的在线播放。 首先,让我们详细了解一下Webview。Webview是Android SDK中的一个类,它提供了一个可以嵌入到...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,并实现Java与JavaScript之间的交互。这种交互能力使得我们可以利用Web技术来增强原生应用的功能,同时保持了良好的用户体验。...
在这个特定的场景中,我们关注的是如何手动封装一个Webview页面与App的交互SDK,以便实现H5页面与原生App之间的通信。这个过程涉及到的关键技术包括uniApp的API调用、JavaScript接口(JSSDK)的构建以及事件的处理。...
此外,还可以利用JavaScript与Java之间的交互来实现更复杂的逻辑,比如点击按钮跳转到下一页或关闭引导页面。为此,我们需要实现WebViewClient的shouldOverrideUrlLoading方法: ```java webView.setWebViewClient...
通过 runJavaScript 实现 QML WebView 与 HTML的简单交互。对应博文 https://blog.csdn.net/weixin_43810973/article/details/84950203
在Android应用开发中,WebView是一个非常重要的组件,它允许我们加载和显示网页内容,甚至可以与原生界面进行交互,实现更加丰富的功能。本项目"Android中Webview与原生界面交互及二维码扫描功能实现"就是一个很好的...
接下来,我们要讨论的是如何实现WebView与JavaScript的交互。在iOS中,`UIWebView`提供了两个主要的方法来实现这一功能:`stringByEvaluatingJavaScriptFromString:`和`addScriptMessageHandler:name:`。 1. `...
总的来说,Android WebView与JavaScript的交互为开发者提供了一个灵活的开发环境,它允许混合使用原生和Web技术,实现快速且高效的移动应用开发。合理利用`WebViewClient`、`WebChromeClient`、`...
然而,由于RN的Webview与原生Android客户端之间的交互存在一些限制,可能导致在Android平台上无法通过Webview组件上传图片文件。本篇文章将深入探讨这个问题,并提供解决方案。 首先,我们要明白问题的根源。在...
通过WebView,我们可以展示HTML、CSS和JavaScript等Web技术构建的页面,同时也可以与原生应用进行交互。本文将深入探讨如何监听WebView中的页面显示事件,以便在特定时刻执行相应的操作。 首先,我们需要了解...
在鸿蒙系统(HarmonyOS)的开发过程中,...通过以上步骤,开发者可以在鸿蒙系统应用中有效地使用Webview,并实现与JavaScript的双向交互。结合HarmonyOS提供的其他组件和服务,可以构建出既美观又功能丰富的应用程序。
本资料“ios-webView与js的交互.zip”主要探讨了如何在iOS应用中实现WebView与JavaScript的有效通信。 首先,我们来看一下UIWebView。在早期的iOS版本中,UIWebView是开发者最常用的WebView组件。通过UIWebView的`...
在这个库中,我们可以通过实现`injectJavaScript`方法来注入自定义的JavaScript代码,从而与原生代码进行交互。 以下是一个基本的步骤来实现图片上传功能: 1. **安装`react-native-webview`**:首先,确保已经...
小程序与Webview的交互是实现混合开发的关键技术,它允许小程序和Web页面之间进行数据传递和事件通信。这一特性对于那些希望将已有的H5网站接入到微信小程序,或者利用H5的开发便利性来增强小程序功能的开发者来说...
在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容,并且可以实现JavaScript与原生代码的交互。这个“webview与js交互demo”就是专门为了展示这种交互机制的一个实例。在该示例...
在Android开发中,Webview通常被用来加载网页内容并实现应用程序与网页之间的交互。然而,有时我们可能有需求在不依赖Webview的情况下实现Android应用与JavaScript的交互。本文将深入探讨这种非Webview方式的交互...