Android WebView

本文详细介绍了在Android应用中使用WebView加载网页的具体步骤,包括添加权限、配置基本属性、加载网页、处理链接和回退事件,以及加载网页时显示进度条的方法。通过实例演示了如何在WebView中实现网页的加载、交互与后退操作。

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

1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误

 在 Androidmanifest.xml文件中添加
<uses-permission android:name="android.permission.INTERNET" /> 
</manifest>

2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);

3、设置WebView基本信息:
          如果访问的页面中有Javascript,则webview必须设置支持Javascript
          webview.getSettings().setJavaScriptEnabled(true);  

          触摸焦点起作用
          requestFocus();

          取消滚动条
          this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

4、设置WebView显示网页
          互联网用:webView.loadUrl("http://www.google.com"); 
          本地文件用:webView.loadUrl(file:///android_asset/xx.html);

   一般本地文件存放在:assets文件中。

5、如果希望点击链接由自己处理,而不是新开Android的系统内置browser中响应该链接(覆盖掉打开内置浏览器进而打开webview的网页)。需要给WebView添加一个事件监听对象(WebViewClient) ,并重写其中的一些方法
                shouldOverrideUrlLoading(url):加载url,对网页中超链接按钮的响应。当按下某个链接时,WebViewClient会调用这个方法。
                onLoadResource   
                onPageStart  
                onPageFinish  
                onReceiveError
                onReceivedHttpAuthRequest   
6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器(实现页面后退),需要在当前Activity中处理并消费掉该Back事件。 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

public boolean onKeyDown(int keyCoder,KeyEvent event){
     if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){
        webview.goBack();   //goBack()表示返回webView的上一页面
         return true;
     }
     return false;
 }

7、在android应用中,有时要加载一个网页,需要配上进度条

在webview.setWebChromeClient后,然后在内部类中写 onProgressChanged事件实现。

public class WebPageLoader extends Activity
  {    
      final Activity activity = this;   
      @Override  
      public void onCreate(Bundle savedInstanceState)   
      {    
          super.onCreate(savedInstanceState);    
          this.getWindow().requestFeature(Window.FEATURE_PROGRESS);   
          setContentView(R.layout.main);  
          WebView webView = (WebView) findViewById(R.id.webView);   
          webView.getSettings().setJavaScriptEnabled(true);
      webView.getSettings().setSupportZoom(true);
          webView.setWebChromeClient(new WebChromeClient() 
          {          
              public void onProgressChanged(WebView view, int progress)   
              {            
                  activity.setTitle("Loading...");       
                  activity.setProgress(progress * 100);     
                  if(progress == 100)            
                      activity.setTitle(R.string.app_name);       
                  }      
              }
          );      
          webView.setWebViewClient(new WebViewClient() {   
                      
              public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)   
              {                 // Handle the error       
                   
              }             
                     
              public boolean shouldOverrideUrlLoading(WebView view, String url) 
              {              
                  view.loadUrl(url);   
                  return true;       
                  }      
              });  
          webView.loadUrl("http://www.baidu.com");  
          } 
      }

WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等。

转载于:https://my.oschina.net/OQKuDOtsbYT2/blog/204225

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值