WebView的简单用法

翻译 2016年06月01日 13:05:49

简单的加载一张网页

     mWebView = new WebView(this);
        setContentView(mWebView);
        //添加这句话,否则会调用第三方浏览器打开
        mWebView.setWebViewClient(new WebViewClient());
        mWebView.loadUrl("http://www.baidu.com");
<manifest >
    <uses-permission android:name="android.permission.INTERNET" />

</manifest>

在WebView中启用JavaScript交互

1.启用JavaScript

WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

2.定义类,用于JavaScript交互
public class WebAppInterface {
Context mContext;

/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
    mContext = c;
}

/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
    Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}

}
注意:@JavascriptInterface 这个必须添加
3.向WebView添加用于交互的对象&&给网页中JavaScript脚本需要的对象名称“Android”

webView.addJavascriptInterface(new WebAppInterface(this), "Android");

4.在assets文件中定义一个hello.html网页,内容如下:

<html>
<body>
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />

<script type="text/javascript">
    function showAndroidToast(toast) {
        Android.showToast(toast);
    }
</script>
</body>
</html>

5.JavaScript&&Android交互的完整java代码如下:
注意assets文件夹的位置
这里写图片描述

public class MainActivity extends Activity {
    WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mWebView = new WebView(this);
        setContentView(mWebView);
        //添加这句话,否则会调用第三方浏览器打开
        mWebView.setWebViewClient(new WebViewClient());
        WebSettings webSettings=mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        mWebView.addJavascriptInterface(new WebAppInterface(this),"Android");
        mWebView.loadUrl("file:///android_asset/hello.html");
    }

    public class WebAppInterface {
        Context mContext;

        /** Instantiate the interface and set the context */
        WebAppInterface(Context c) {
            mContext = c;
        }

        /** Show a toast from the web page */
        @JavascriptInterface
        public void showToast(String toast) {
            Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
        }
    }


}

处理WebView中链接的打开方式问题

启用JavaScript带来便捷的同时引入了安全问题,如果可以确保跳转的链接是安全的可以使用WebView,如果不能保证则使用默认浏览器进行处理。

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.example.com")) {
            // This is my web site, so do not override; let my WebView load the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}

修改

        mWebView.setWebViewClient(new WebViewClient());
为
        mWebView.setWebViewClient(new MyWebViewClient ());

WebView浏览历史的回退

这个没有什么好解释的,就是可以查看浏览历史进行前进&&回退,放一个Demo,大家理解一下吧。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_back"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="goBack" />

        <Button
            android:id="@+id/btn_forward"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="goForward" />

    </LinearLayout>


    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/ll"></WebView>

</RelativeLayout>

public class MainActivity extends Activity implements View.OnClickListener {
    WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = (WebView) findViewById(R.id.webView);
        findViewById(R.id.btn_back).setOnClickListener(this);
        findViewById(R.id.btn_forward).setOnClickListener(this);

        //添加这句话,否则会调用第三方浏览器打开
        mWebView.setWebViewClient(new WebViewClient());
        mWebView.loadUrl("http://www.baidu.com");
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_back: {
                if (mWebView.canGoBack()) {
                    mWebView.goBack();
                }
                break;
            }
            case R.id.btn_forward: {
                if (mWebView.canGoForward()) {
                    mWebView.goForward();
                }
                break;
            }
            default:
                break;

        }
    }

}

做WebView调试的时候踩了一个坑,url必须添加http://,即使是IP

翻译地址

https://developer.android.com/guide/webapps/webview.html

相关文章推荐

NetWork获取连接状态/WebView的简单用法/当按返回键时返回堆栈内容

NetWork获取连接状态1.首先通过连接管理器获取系统的连接服务2.然后获取当前活动的网络连接信息3.判断网络连接是否为空以及得到网络连接的类型 private ConnectivityManage...

WebView用法与JS交互

这篇文章讲了一些WevView的使用方法,在项目中,常常会使用到,尤其是需要与JS交互。 效果图 点击“调用alert”按钮,在Android中捕获JS alert,并用Andro...

android webview用法小结1

原文链接:http://blog.csdn.net/ethan_xue/article/details/7841431 将webview里常用的东西拿出来分享下 想要webview...

使用WebView时的一些坑(图片拼接、不显示、shouldOverrideUrlLoading正确用法)

开始学习WebView时感觉很简单,就是拿到控件后给他个URL就OK啦,但是在项目中真正用的时候,会有各种问题。问题1:如果URL的内容是一个个图片拼接的,会出现图片折叠的现象 原因:没有对WebV...

WebView用法与JS交互

这篇文章讲了一些WevView的使用方法,在项目中,常常会使用到,尤其是需要与JS交互。 效果图 点击“调用alert”按钮,在Android中捕获JS alert,并用Androi...

android webview用法小结1

将webview里常用的东西拿出来分享下 想要webview加载页面,只需webView.loadUrl("http://m.baidu.com");当然别忘了添加网络权限 此时点击网页里的超...

WebView用法与JS交互

WebView用法与JS交互 http://blog.csdn.net/chenfeng0104/article/details/7023448 这篇文章讲了一些WevView...

Android中的WebView控件用法(二)

本文继第一篇文章介绍webView基本使用之后,作进步android中WebView控件研究使用。WebView有四个控制点、物理返回键的处理、控制网页链接在WebView中跳转、显示加载页面的进度条...

WebView与js交互用法与注意

前段时间做的项目涉及到WebView与js交互,当是有些困惑,不过还是解决了: 一、WebView 基本用法       1.首先不要忘记在清单文件下添加网络权限:        use...

webView的用法整理

WebView是Android中一个非常实用的组件,它和Safai、Chrome一样都是基于Webkit网页渲染引擎,可以通过加载HTML数据的方式便捷地展现软件的界面。使用WebView开发软件有一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)