Android WebView(二) WebView常用API详解

    上一篇文章简单描述了WebView(根据官网文档简单翻译的),让我们对它有新的不一样的认识。如果你对WebView还不是很了解,那么请先去看看 Android WebView(一) WebView详解。今天,我们就来详解WebView中的常用api。

1.public void addJavascriptInterface (Object object,String name)

方法说明:

    在JavaScript代码中可以调用Android本地代码。

参数说明:

    object  java 对象注入到WebView'的JavaScript上下文,空值时将忽略 (我们一般会自己实现一个类,这个类里面提供了JavaScript调用的方法)

    name   在JavaScript中暴露的对象使用的名称(我们在JavaScript中调用本地方法时的对象名称,调用模式为javascript:name.方法名())

PS:在声明类的方法时,记得加上@JavascriptInterface(为了兼容JELLY_BEAN_MR1(4.2)以上版本),并且方法必须是公有的。

使用例子:

  html代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script type="text/javascript">   
function showToast(toast) {       
    javascript:js.showToast(toast);   
     }
</script>

</head>
<body>
<input type="button" value="Say hello"
    onClick="showToast('Hello Android!')" />
</body>
</html>
android代码

public class JavaScriptinterface {
    private Context mContext;

    /** Instantiate the interface and set the context */
    public JavaScriptinterface(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();
    }
}
...
myWebView.addJavascriptInterface(new JavaScriptinterface(this),
                "js");
    当在网页中点击按钮时,就会调用Android应用中定义的showToast()方法。

2.public boolean canGoBack ()

方法说明:

    获取WebView 是否有往前的历史记录(后退)。

返回值:

    当且仅当WebView 有往前的历史记录时,返回true。

PS:当需要执行goBack ()方法前,先调用该方法,如果为true,则可以调用goBack ()方法。

3.public void goBack ()

方法说明:

    回到这个WebView 的前面历史界面(后退)。

4.public boolean canGoForward ()

方法说明:

      获取WebView 是否有往后的历史记录(前进)。

返回值:

    当且仅当WebView 有往后(前进)的历史记录时,返回true。

5.public boolean canGoBackOrForward (int steps)

方法说明:

    获取网页是否能后退或者前进相应的偏移量。(负数表示后退,正数表示前进)

参数说明:

    steps  移动负数或者正数的偏移量历史

6.public boolean canZoomIn ()

方法说明:

    该方法在API17,不推荐使用(弃用)。该方法很容易有误差在网页渲染和UI线程由于速度条件。推荐使用onScaleChanged(WebView, float, float),获取WebView 是否能放大。

返回值:

    如果WebView 可以放大,返回true。

7.public boolean canZoomOut ()

方法说明:

    该方法在API17,不推荐使用(弃用)。该方法很容易有误差在网页渲染和UI线程由于速度条件。推荐使用onScaleChanged(WebView, float, float),获取WebView 是否能缩小。

返回值:

    如果WebView 可以缩小,返回true。

8.public Picture capturePicture ()

方法说明:

    该方法在API19,不推荐使用(弃用)。使用onDraw(Canvas)在WebView获取一个位图快照,或者saveWebArchive(String)保存内容到文件上。

返回值:

    返回这个WebView当前内容的一张图片。

9.public void clearCache (boolean includeDiskFiles)

方法说明:

    清除缓存资源。注意,是每个应用的缓存,这么做将清除所有WebView的缓存。

参数说明:

 includeDiskFiles   如果参数是false,那么只清除RAM 缓存。

10.public static void clearClientCertPreferences (Runnable onCleared)

方法说明:

    清除客户端证书preferences 存储在响应程序/取消客户端证书请求。注意,Webview会自动清除这些preferences ,当收到ACTION_STORAGE_CHANGED时。preferences 是由所有的webview共享,由嵌入应用创建。

参数说明:

    onCleared  当客户的证书被清除时runnable 执行,如果对返回值不感兴趣,那么可以传递空值。runnable 将被 UI线程调用。

11.public void clearFormData ()

方法说明:

    仅仅删除自动完成填充的表达数据,并不会删除WebView存储的数据。

12.public void clearHistory ()

方法说明:

    清除WebView内部的历史记录。

13.public void clearMatches ()

方法说明:

    清除网页的高亮匹配文本,文本由findAllAsync(String)创建。

14.public void clearView ()

方法说明:

    该方法在API18,不推荐使用(弃用)。使用WebView.loadUrl("about:blank") 比较可靠重置View状态,并且释放网页资源(包括任何正在运行的JavaScript)。

    清除WebView,以至于onDraw()将绘制一个什么都没有背景是白色,并且当MeasureSpec 不等于MeasureSpec.EXACTLY,返回0。

15.public void destroy ()

    销毁这个WebView的状态。当系统移除这个WebView后,才能调用这个方法。调用这个WebView的destroy可能不会调用其他方法。

16.public void loadData (String data, String mimeType, String encoding)

方法说明:

    加载'data'数据。

参数说明:

     data  给定编码的字符串数据

    mimeType  数据的MIME Type(该资源的媒体类型,媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的)

    encoding  数据的编码

PS:JavaScript的同源策略,意味着脚本运行在一个网页加载使用这个方法时,将无法访问使用任何'data'之外scheme,包括 http(s)。为了避免这种情况,使用loadDataWithBaseURL()和合适基本URL。编码参数需要指定数据是base64 还是URL 编码。如果数据是base64 编码,则编码参数必须是base64。对于所有其他参数值,包括空值,假设数据是八位字节范围内的ASCII 编码,那么就是一个安全的URL字符, 超出八位字节范围的之外的用标准的%xx 十六进制URLs 编码。例如, '#', '%', '\', '?' 分别用%23, %25, %27, %3f代替。

17.public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)

参数说明:

    baseUrl   URL作为页面的基URL。如果为空,默认:空白。

    data        给定编码的字符串数据

    mimeType  数据的MIME Type(例如, 'text/html',默认是'text/html)

    encoding 数据的编码

    historyUrl  URL 作为历史条目,如果为null,如果为空默则为:空白。如果不为空,则必须是一个有效的URL 

18.public void loadUrl (String url)

  方法说明:

        加载指定的url

参数说明:

      url 加载资源的url

19.public voidloadUrl(String url,Map<StringString> additionalHttpHeaders)

方法说明:

        加载指定的具有特殊的额外的http请求头的url

参数说明:

      url   加载资源的url

   additionalHttpHeaders 额外的请求头被用于http请求在这个url,指定一个map中的值。注意,如果该map包含任何请求头的默认设置在该WebView,例如控制缓存,接受类型或用户代理,他们的值可能会被该WebView的默认值覆盖。

20.public voidsetWebViewClient(WebViewClient client)

方法说明:

    设置WebViewClient 将接受各种通知和请求,这将取代当前程序的处理。

参数说明:

    client  WebViewClient 的实现。

PS:WebViewClient  

1.public boolean shouldOverrideUrlLoading (WebView view, String url)

方法说明:

       给主机应用一个机会接管控制当一个新的url将要被加载在当前WebView。如果没有提供WebViewClient ,默认的WebView将要求Activity Manager 去选择一个合适的handle为这个url。如果有WebViewClient ,返回 ‘true’,意思是说主应用程序处理这个url,否则返回‘false’意思是当前的WebView要处理这个url。这个方法不允许使用‘post’请求方法调用。

参数说明:

      view 发起回调的WebView 
     url 加载资源的url
返回值:

    如果主机应用程序想要离开当前的WebView并且它自己处理url,那么返回 ‘true’,否则,返回‘false’。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
Android WebView 是一个用于在应用程序中显示 Web 内容的组件。以下是 Android WebView 常用用法: 1. 加 URL:使用 WebView 加载 URL 可以通过调用 loadUrl() 方法来实现,例如: ``` webView.loadUrl("https://www.example.com"); ``` 2. 加载本地文件:使用 WebView 加载本地文件可以调用 loadUrl() 方法并传递文件的本地路径,例如: ``` webView.loadUrl("file:///android_asset/index.html"); ``` 3. 监听页面加载状态:可以使用 WebViewClient 类的 onPageStarted 和 onPageFinished 方法来监听页面加载状态,例如: ``` webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // 页面开始加载时执行的操作 } @Override public void onPageFinished(WebView view, String url) { // 页面加载完成时执行的操作 } }); ``` 4. 向 WebView 中注入 JavaScript:可以使用 WebView 的 loadUrl() 方法向 WebView 中注入 JavaScript,例如: ``` webView.loadUrl("javascript:alert('Hello, world!')"); ``` 5. 调用 WebView 中的 JavaScript 方法:可以使用 WebView 的 evaluateJavascript() 方法调用 WebView 中的 JavaScript 方法,例如: ``` webView.evaluateJavascript("javascript:myFunction()", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { // 处理 JavaScript 方法返回的结果 } }); ``` 6. 启用 JavaScript:可以通过调用 WebView 的 setJavaScriptEnabled() 方法来启用 JavaScript,例如: ``` webView.getSettings().setJavaScriptEnabled(true); ``` 7. 启用缩放功能:可以通过调用 WebView 的 setBuiltInZoomControls() 方法启用缩放功能,例如: ``` webView.getSettings().setBuiltInZoomControls(true); ``` 8. 自定义 WebViewClient:可以通过继承 WebViewClient 类并重写其中的方法来自定义 WebViewClient,例如: ``` private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // 在 WebView 中打开链接 view.loadUrl(url); return true; } } webView.setWebViewClient(new MyWebViewClient()); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值