WebView的使用

Android WebView 实战
本文介绍如何在Android应用中使用WebView加载网页,包括配置权限、处理前后导航、启用JavaScript及加载过程中的进度显示。
  1. 利用Android自带的浏览器进行联网:
    • Uri uri=Uri.parse(Url);
      Intent intent=new Intent(Intent.ACTION_VIEW,uri);
      startActivity(intent);
  2. WebView
    • 在应用中加入WebView时候,只需要在布局中加入WebView属性就可以了
    • 加载页面使用loadUrl方法,就是,webView.loadUrl("http://lol.qq.com"),如果是本地的Html文件的话,就是webView.loadUrl("file:*/assets/xx.html"),本地文件存放在assets文件中;如果你点击加载好的网页没有相应的话呢,有可能是失去了焦点,使页面获得焦点的方法是:webView.requestFocus();
    • 获取网络访问权限:<uses-permission android:name="android.permission.INTERNET"/>
    • 我们点击WebView中页面的链接时候,都是由默认的浏览器来打开并加载URL的,不过,我们可以覆盖这个行为:webView.setWebViewClient(new WebViewClient());并且复写方法shouldOverrideUrlLoading();
  3. 在WebView中使用Javascript
    • 如果你想加载在WebView中的web页面使用Javascript,就需要在WebView中启用Javascript。启用JavaScript可以通过WebView中带有的WebSettings来启用它。可以通过getSettings来获取WebSettings的值,然后通过setJavaScriptEnable来启用Javascript;
      • WebView webView=findViewById();
      • WebSettings webSettings=webView.getSettings();
      • webSettings.setJavaScriptEnable(true);
  4. 后退与前进
  5. 我们之前,你按返回键,他就直接退出程序了,但是,当WebView覆盖了URL加载,它会自动生成历史访问记录,你可以通过goBack(),goForward()向前,向后来访问已经访问过的站点;
    •   public boolean shouldOverrideUrlLoading(WebView viewString url) {
                     //返回值是ture则是,在WebView中打开,false则是第三方浏览器打开
                     Log.d("test""网址:"+webView.getUrl());             
    • return super.shouldOverrideUrlLoading(viewurl);         
    • }
    • 返回之前网页
    • public boolean onKeyDown(int keyCode, KeyEvent event) {
          if((keyCode==KeyEvent.KEYCODE_BACK)){
              Toast.makeText(this,webView.getUrl(),Toast.LENGTH_LONG).show();
              //因为网页是显示在WebView上面的,所有我们的WebView是有记录的。
              if (webView.canGoBack()){
                  webView.goBack();//返回上一个界面
                  return true;
              }else{
                  System.exit(0);//退出程序
              }
          }
          return super.onKeyDown(keyCode, event);
      }

  6. 加载过程
    • 有些网页可能加载缓慢,所以我们需要去判断页面的加载过程,制作进度条给予用户良好的体验效果。
    • //启用JavaScript
      private void javascript(){
          WebSettings webSettings=webView.getSettings();
          webSettings.setJavaScriptEnabled(true);
          //加载过程
          /**
           * 加载显示条的是设置
           * newProgress是0-100的整数 ,可以作为Progress的数值
           */
          webView.setWebChromeClient(new WebChromeClient() {
              @Override
              public void onProgressChanged(WebView view, int newProgress) {
                  if (newProgress == 100) {
                      closeProgerss();
                 else {
                      openProgerss( newProgress);
                  }
              }
          });
      }

      private void openProgerss(int newProgress) {
          if (progressDialog==null){
              progressDialog=new ProgressDialog(MainActivity.this);
              progressDialog.setTitle("正在加载");
              progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
              progressDialog.setProgress(newProgress);
              progressDialog.show();
          }else{
              progressDialog.setProgress(newProgress);
          }
      }

      private void closeProgerss() {
          if (progressDialog!=null&&progressDialog.isShowing()){
              progressDialog.dismiss();
              progressDialog=null;
          }
      }
  7. WebView缓存的运用
    • 优先使用缓存
      • webView.getSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    • 不使用缓存
      • webView.getSettings.setCacheMode(WebSettings.LOAD_CACHE_NO_CACHE );
### 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、付费专栏及课程。

余额充值