WebView的使用

本文介绍如何使用Android中的WebView组件加载网页,并实现自定义链接跳转、页面回退及加载进度条等功能,同时还提供了处理错误页面及刷新的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用WebView目的:

1.兼容已有的项目;2.可以动态更新;

注:用WebView展示html会造成耗电量,加载页面也会造成发热。

WebView的使用方法:


  •  webview = (WebView) findViewById(R.id.webview);  
  •         WebSettings webSettings = webview.getSettings();  
  •         //设置WebView属性,能够执行Javascript脚本    
  •         webSettings.setJavaScriptEnabled(true);    
  •         //设置可以访问文件  
  •         webSettings.setAllowFileAccess(true);  
  •          //设置支持缩放  
  •         webSettings.setBuiltInZoomControls(true);  
  •         //加载需要显示的网页    
  •         webview.loadUrl("http://www.baidu.com");    
  •         //设置Web视图    
  •         webview.setWebViewClient(new webViewClient ());   

  • 在AndroidManifest.xml中添加网络访问权限



  • // 简单地加载一个页面
    mWebview .loadUrl(url);
    // 加载assets目录下的页面(assets\index.html)
    mWebview .loadData( "file:///android_asset/index.html" );

    但你会发现,如果点击页面的某条链接进行跳转的话,会启动系统的默认浏览器进行加载,调出了我们本身的应用。要解决这个问题我们需要借助于WebViewClient。


    [自定义链接的跳转显示]
    mWebview .setWebChromeClient( new  WebViewClient() {
                
           
             public   boolean   shouldOverrideUrlLoading(WebView view, String url){
                 // 使用当前的WebView加载页面
                view.loadUrl(url);
                 return   true ;
           }
                
    });

    [页面回退]
    实现了跳转后,你忽然想返回到前一个浏览过的页面是,发现返回键是直接退出应用了。要实现类似系统浏览器那样的,返回键先是返回到上一个页面,直到最初始的页面才退出的话,可以这么做:
    // 重写onKeyDown
    public   boolean   onKeyDown ( int   keyCode, KeyEvent event) {
          if   ((keyCode == KeyEvent. KEYCODE_BACK ) &&   mWebview .canGoBack()) {
               mWebview .goBack();
              return   true ;
         }
             
          return   super .onKeyDown(keyCode, event);
    }


    [进度条]
    要是再加上加载进度条那就完美了,我们可以借助WebChromeClient来实现:
    mWebview .setWebChromeClient( new  WebChromeClient()   {
                  
           public   void   onProgressChanged (WebView view,   int   newProgress){
                 loadingProgress .setProgress(newProgress);
          }
    });

    当WebView出现错误时(无网络):在webView.setWebViewClient方法下重写onReceivedError方法,可在布局文件下添加一个TextView,textView.setText(“404 error”);然后隐藏webView.setVisihilty(View.GONE);

    WebView的重新刷新:webView.reload();

### Android WebView 使用教程 #### 什么是 WebView? `WebView` 是 Android 提供的一个控件,用于在应用内部加载和展示网页内容。它允许开发者嵌入 HTML 页面到应用程序中,并支持 JavaScript 和 CSS 的执行。 --- #### 基本初始化与配置 要使用 `WebView`,首先需要在布局文件中定义该组件: ```xml <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 接着,在 Activity 或 Fragment 中获取并初始化 `WebView` 实例: ```java import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webView); // 启用JavaScript支持 WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); // 加载URL webView.loadUrl("https://www.example.com"); } } ``` 上述代码展示了如何启用 JavaScript 支持以及加载指定 URL[^1]。 --- #### 数据提交 (POST 请求) 如果需要通过 POST 方法向服务器发送数据,则可以使用以下方式: ```java String postData = "username=admin&password=secret"; webView.postUrl("https://example.com/login", EncodingUtils.getBytes(postData, "base64")); ``` 注意:这里的数据编码应遵循目标服务端的要求[^2]。 --- #### 处理 Cookies 为了处理 cookies,可以通过 `CookieManager` 设置或读取 cookie: ```java import android.webkit.CookieManager; // 添加Cookie CookieManager.getInstance().setCookie("https://example.com", "name=value"); // 获取所有Cookies String allCookies = CookieManager.getInstance().getCookie("https://example.com"); System.out.println(allCookies); ``` 此部分操作有助于保持用户的登录状态或其他个性化设置。 --- #### 清除缓存与历史记录 当用户退出或者切换账户时,可能需要清理 WebView 缓存及相关信息: ```java // 清楚缓存 webView.clearCache(true); // 删除历史记录 webView.clearHistory(); // 移除基本认证凭证 webView.removeJavascriptInterface("interfaceName"); // 如果存在敏感数据存储需求,可进一步调用清除函数 webView.clearFormData(); ``` 需要注意的是,移除 Java 对象接口可能会因不同版本的 Android 而表现不一致^。 --- #### 高级特性 除了基础功能外,`WebView` 还具备更多高级选项,比如手势识别、离线浏览模式等。这些都可以通过调整其设置来实现[^4]: ```java WebSettings webSettings = webView.getSettings(); webSettings.setDomStorageEnabled(true); // 开启DOM storage API webSettings.setDatabaseEnabled(true); // 允许数据库API webSettings.setAppCacheEnabled(true); // 启动应用缓存 webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 自适应屏幕宽度 ``` 然而值得注意的一点是,对于 H5 AJAX 请求无法直接拦截修改响应头等内容[^5]。因此某些场景下需借助外部工具完成更复杂的交互逻辑。 --- ### 总结 以上介绍了关于 Android 平台下的 WebView 组件的基础运用技巧及其扩展能力。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值