Android WebView与混合应用

Android WebView与混合应用

背景

现在不少应用软件需要多平台,为了方便维护,很多都是混合开发模式,即主要业务逻辑是在web服务器上的,应用也是用js写的网页,手机上只是一个提供些许特殊功能的浏览器。


Android View使用

布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <WebView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/WebViewMain" />

</RelativeLayout>

布局的要求就是几乎是全屏显示浏览的内容,让用户仿佛在使用一个安卓的原生程序


在Activity的onCreate方法上要为WebView稍微设置一下

        WebView webView=(WebView)findViewById(R.id.WebViewMain);
        webView.getSettings().setJavaScriptEnabled(true);    //支持JavaScript
        webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);//关闭缓存
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);//不加上,会显示白边
        webView.loadUrl("http://www.helloclyde.com.cn/JQuery-Demo/");//添加需要显示的URL

与JS交互

像上面写完的代码只是一个全屏的浏览器而已,为了实现某些特殊的功能比如调用摄像头和程序退出,我们需要安卓内的JAVA代码能和网页的js代码互动

先写一个js调用安卓方法的例子

在WebView.loadUrl方法前要先传递java对象,比如

webView.addJavascriptInterface(this, "MainActivity");

我把Activity对象传递到了JS接口中,并且把它命名为MainActivity

在JS中要这么调用

javascript:window.MainActivity.Exit()

这样的话JS就调用了传递过去的MainActivity对象的Exit方法,注意这个方法要为public。


其他注意点:

在Android SDK 17以及以上的版本会屏蔽

webView.addJavascriptInterface
方法,所以要把目标SDK版本设置成16

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值