`
龙哥IT
  • 浏览: 254095 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

WebView的一些基本问题

 
阅读更多

这里我们初步体验一下在android是使用webview浏览网页,在SDK的Dev Guide中有一个WebView的简单例子 。 

在开发过程中应该注意几点:
 
    1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
    2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
        webview.getSettings().setJavaScriptEnabled(true);  
    3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。

 

mWebView.setWebViewClient(new WebViewClient(){       
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {       
                        view.loadUrl(url);       
                        return true;       
                    }       
        });   

 

如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。

 

public boolean onKeyDown(int keyCode, KeyEvent event) {       
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       
            mWebView.goBack();       
                   return true;       
        }       
        return super.onKeyDown(keyCode, event);       
    }  

 

下一步让我们来了解一下android中webview是如何支持javascripte自定义对象的,在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。

  看一个实例:

public class WebViewDemo extends Activity {        
    private WebView mWebView;       
    private Handler mHandler = new Handler();       
       
    public void onCreate(Bundle icicle) {       
        super.onCreate(icicle);       
        setContentView(R.layout.webviewdemo);       
        mWebView = (WebView) findViewById(R.id.webview);       
        WebSettings webSettings = mWebView.getSettings();       
        webSettings.setJavaScriptEnabled(true);       
        mWebView.addJavascriptInterface(new Object() {       
            public void clickOnAndroid() {       
                mHandler.post(new Runnable() {       
                    public void run() {       
                        mWebView.loadUrl("javascript:wave()");       
                    }       
                });       
            }       
        }, "demo");       
        mWebView.loadUrl("file:///android_asset/demo.html");       
    }       
}   

 

我们看addJavascriptInterface(Object obj,String interfaceName)这个方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是 interfaceName(demo),作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过 javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的。

<html>       
        <mce:script language="javascript"><!--     
       
                function wave() {       
                    document.getElementById("droid").src="android_waving.png";       
                }       
             
// --></mce:script>       
        <body>       
            <a onClick="window.demo.clickOnAndroid()">       
                                <img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>       
                                Click me!       
            </a>       
        </body>       
</html>      

 

这样在javascript中就可以调用java对象的clickOnAndroid()方法了,同样我们可以在此对象中定义很多方法(比 如发短信,调用联系人列表等手机系统功能。),这里wave()方法是java中调用javascript的例子。

这里还有几个知识点: 

1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
 
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。

本案例只提供参考

分享到:
评论

相关推荐

    WebVIew的基本使用

    本篇文章将详细介绍WebView的基本使用,并通过一个名为"WebViewDemo"的示例项目来加深理解。 首先,我们需要在AndroidManifest.xml文件中添加Internet权限,因为WebView需要网络访问权限才能加载网页: ```xml ``...

    WebView的基本详细使用

    **WebView基本详细使用** 在Android应用开发中,`WebView`是一个非常重要的组件,它允许我们在应用程序内部展示网页内容,而不需跳转到浏览器。`WebView`不仅能够加载远程URL,还可以加载本地HTML文件,实现一些...

    Android代码-Android-X5WebView基本封装

    Android-X5WebView基本封装和使用 通过OkHttp拦截器、自定义CookieJar有效完成客户端与H5端的Cookie同步管理 监听WebView的加载进度 滚动条的设置(隐藏或者显示,内侧显示还是外侧显示) 优化X5WebView的预加载问题...

    Android的WebView的基本使用

    本篇将详细介绍WebView的基本使用方法,帮助开发者更好地理解和应用这个组件。 1. **什么是WebView** WebView是Android系统提供的一种控件,它允许我们在Android应用中展示网页内容,无需离开应用就能浏览网页,...

    WebView控件基本使用 Android

    WebView 控件基本使用 Android WebView 控件是 Android 中的一个浏览器控件,通过这个控件可以直接访问网页,或者把输入的 HTML 字符串显示出来。WebView 的功能非常强大,支持 CSS、Java script 等 HTML 语言,...

    webview解决兼容问题封装ProgressWebView

    首先,让我们理解`WebView`的基本用法。在Android中,`WebView`是`android.webkit`包下的一个类,可以加载和显示HTML、CSS、JavaScript等Web内容。我们可以通过调用`loadUrl()`方法加载网页,使用`WebViewClient`和`...

    WebView基本的js与java相互调用

    本教程将详细讲解如何实现JavaScript与Java之间的基本交互,即WebView中的js调用Android代码以及Android对js的调用。 一、WebView的配置 首先,我们需要在XML布局文件中添加WebView组件,并在对应的Activity中初始...

    Webview播放网络视频并实现全屏显示,解决声音问题

    首先,我们需要了解WebView的基本用法。在Android布局XML文件中,添加WebView组件: ```xml &lt;WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" /&gt;...

    Android WebView 去除标题

    首先,我们需要了解WebView的基本用法。在Android中,我们可以通过以下方式创建一个WebView: ```java WebView webView = new WebView(this); webView.loadUrl("https://www.example.com"); setContentView(webView...

    webview 监听页面显示事件

    首先,我们需要了解WebView的基本使用。在Android布局XML文件中,我们可以通过添加WebView标签来创建一个WebView实例: ```xml &lt;WebView android:id="@+id/webView" android:layout_width="match_parent" ...

    android WebView预加载

    现在web app越来越多,webview控件的使用也越来越重要。 有时我们会在启动页或引导页之后,加载一...相信会给大家带来一些解决此类问题的思路。程序保证能运行,用eclipse写的,有什么问题大家可以留言,一定及时答复。

    WebView使用解析(一)之基本用法

    本文将深入探讨WebView的基本用法,包括它的初始化、加载网页、与JavaScript交互以及处理网络请求等方面。 1. **WebView的初始化** 在Android布局文件中,我们可以通过XML来声明一个WebView,例如: ```xml ...

    Android Webview滑动监听

    首先,我们要了解`WebView`的基本用法。在Android Studio中,创建一个新的布局XML文件,添加`WebView`组件: ```xml &lt;WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_...

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

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

    Android WebView加载网页以及本地图片缓存问题

    本文将深入探讨如何使用WebView加载网页以及本地图片,并解决缓存问题。 一、WebView的基本使用 1. 初始化WebView:首先,我们需要在布局XML文件中添加WebView组件,并在对应的Activity或Fragment中找到该组件。...

    Android实现WebView懒加载

    "Android实现WebView懒加载"这一技术就是为了优化这个问题,通过延迟加载部分资源,提升应用的启动速度和响应性。 首先,我们要理解什么是懒加载(Lazy Loading)。懒加载是一种优化策略,它推迟非关键资源的加载,...

    WebView加载失败错误处理

    然而,在实际使用中,由于网络问题、页面不存在或编码错误等原因,WebView可能会加载失败。这时,我们需要对这些错误进行妥善处理,为用户提供友好的体验。本文将详细介绍如何在WebView加载失败时,自定义错误页面。...

    webview的简单实现

    以上就是WebView的基本使用方法和一些关键知识点。通过这些,你可以创建一个简单的网页浏览应用。然而,WebView的功能远不止这些,比如还有处理文件选择、实现进度条显示、自定义加载错误页面等功能,这些都是更深入...

    android使用webview上传文件兼容问题解决支持5.0以上系统

    以上就是解决Android 5.0以上系统Webview文件上传兼容问题的基本策略。通过自定义File Chooser、处理运行时权限以及建立JavaScript交互,我们可以确保在各种Android版本中都能正常上传文件。在实际开发中,可能还...

    Android通过WEBVIEW调用HTTPS

    首先,了解WebView的基本使用。在AndroidManifest.xml文件中,你需要为应用添加INTERNET权限,这是访问网络的基础: ```xml ``` 在你的Activity或Fragment中,你可以创建并初始化一个WebView对象: ```java ...

Global site tag (gtag.js) - Google Analytics