基本使用 使用WebView通常是需要网络的,所以需要加上访问网络的权限 <uses android:name=android.permission.INTERNET> 1.加载某个url的方法 WebView.loadUrl(http://www.baidu.com); 需要注意的是不要省略前面的http://,省略的话,某些ROM中的WebView会加载失败 2.加载assets中的HTML WebView.loadUrl(file:///android_asset/xxx.html) 3.加载一段javascript WebVi 在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现与网页的交互。以下是一些关于WebView的常用方法及其详细说明: **1. 加载URL** ```java WebView.loadUrl("http://www.baidu.com"); ``` 加载指定的URL时,确保提供完整的URL地址,包括协议部分(如http://或https://)。如果不包含协议,某些设备上的WebView可能无法正确解析,导致加载失败。 **2. 加载Assets目录中的HTML** ```java WebView.loadUrl("file:///android_asset/xxx.html"); ``` 这种方法允许开发者将HTML文件放入项目的`assets`目录下,然后通过WebView加载。这种方式便于离线内容的展示或者对HTML内容进行更灵活的控制。 **3. 加载JavaScript** ```java WebView.loadUrl("javascript:" + js_code); ``` 此方法用于执行JavaScript代码。`js_code`应替换为实际的JavaScript字符串。注意,执行的JavaScript代码应当是安全的,避免引起潜在的安全问题。 **4. 为JavaScript提供本地方法** ```java webView.addJavascriptInterface(new JavaJs(this), "JavaJs"); ``` 通过`addJavascriptInterface`方法,可以向JavaScript提供Android中的方法调用。例如,创建一个内部类`JavaJs`,包含一个`showToast`方法,使得JavaScript能够调用这个方法显示Toast。为了安全起见,所有暴露给JavaScript的方法必须标记为`@JavascriptInterface`,并且应该是线程安全的。在API 17及更高版本中,未标记`@JavascriptInterface`的方法不会被JavaScript访问。 **5. 页面跳转处理** ```java webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (Uri.parse(url).getHost().equals("www.xxx.com")) { // 自己的页面,直接使用WebView加载 return false; } // 别的公司的页面,使用浏览器打开 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; } }); ``` 通过设置`WebViewClient`,可以自定义URL的加载行为。`shouldOverrideUrlLoading`方法允许开发者决定是否在WebView内部处理URL跳转,或者启动新的浏览器活动。 **6. 访问历史回退** ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { webView.goBack(); return true; } return super.onKeyDown(keyCode, event); } ``` 覆盖`onKeyDown`方法,监听后退键,如果WebView有可回退的历史记录,则调用`goBack()`方法,实现类似浏览器的回退功能。 **7. 输出JavaScript日志** ```java @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { Log.d("WebViewLog", consoleMessage.message()); return super.onConsoleMessage(consoleMessage); } ``` 重写`WebChromeClient`的`onConsoleMessage`方法,可以捕获并打印JavaScript的日志信息,便于调试JavaScript代码。 此外,还有一些其他常用的WebView设置,如启用JavaScript执行、禁用内置缩放功能、设置自适应屏幕等: ```java webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); ``` Android的WebView提供了一种强大的方式,将Web内容与原生应用结合,实现丰富的交互体验。开发者需要理解这些常用方法,并结合具体需求来合理使用,以创建出功能完善的混合应用。
- 粉丝: 9
- 资源: 960
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js-leetcode题解之158-read-n-characters-given-read4-ii-call
- js-leetcode题解之157-read-n-characters-given-read4.js
- js-leetcode题解之156-binary-tree-upside-down.js
- js-leetcode题解之155-min-stack.js
- js-leetcode题解之154-find-minimum-in-rotated-sorted-array-ii.js
- js-leetcode题解之153-find-minimum-in-rotated-sorted-array.js
- js-leetcode题解之152-maximum-product-subarray.js
- js-leetcode题解之151-reverse-words-in-a-string.js
- js-leetcode题解之150-evaluate-reverse-polish-notation.js
- js-leetcode题解之149-max-points-on-a-line.js