android笔记8-通过Inetnt调用系统的浏览器

来源:互联网 发布:网络推广部 架构 编辑:程序博客网 时间:2024/06/10 16:01
通过Inetnt调用系统的浏览器:
  Uri uri = Uri.parse(url);// url 为你要链接的地址,为String;
  Intent intent = new Intent(Intent.ACTION_VIEW,url);
  startActivity(intent);

在webView加载页面时,要用loadUrl();
加载两类资源:
 1.web资源:webView.loadUrl("http://www.baidu.com");
 2.本地文件:webView.loadUrl("file:///.../xx.html");
   本地文件放在:assets文件中;

使页面获得焦点:
  webView.requestFocus();

步骤:
 第一步:声明webView,创建初始化函数init(),将初始化都写在init()函数中;在manifest文件的permissons中,添加uses permission,选择INTENT保存;
 第二步:在init()中,使用loadUrl两种方式来加载网页;(此时还是用系统存在的浏览器来加载,原因是当用户点击一个webView中的页面链接时,通常是由默认的浏览器打开并加载目标URL的,而,你可以在webView中覆盖这一行为,调用setWebViewClient(new WebViewClient());
 第三步:覆盖webView的默认;调用
setWedViewClient(new WebViewClient()
{
  public boolean shouldOverrideUrlLoading(WebView view, String url)
  {
     //为true时,控制网页在webView中打开;
     //为false时,调用系统浏览器或第三方浏览器打开;
     //因此使用view.loadUrl()加载,并强制返回true,就可以用webView打开;
    view.loadUrl(url);
    return true;
  }
 });



后退与前进:
如果直接按返回键,就会直接退出程序;当你的wedView覆盖了URL的加载,他会自动生成历史访问记录,可以通过goBack()或goForward()向前或向后访问已经访问过的站点;
 
步骤:
 第一步:改写物理按键--返回的逻辑,重写onKeyDown()方法:
  public boolean onKeyDown(int keyCode,keyEvent event)
 {
   if(keyCode==KeyEvent.KEYCODE_BACK)
   {
    if(webView.canGoBack())
    {
       webView.goBack();//返回上一页面;
       return true;
    }
    else {
       System.exit(0);//退出程序;
    }
   }
    return super.onKeyDown(keyCode,event);
 }


判断页面的加载过程:
 第一步:声明ProgressDialog,
 webView.setWebChromeClient(new WebChromeClient())
{
   public void onProgressChanged(WebView view,int newProgress)
   {     //newProgress为1-100之间的整数;
     if(newProgress==100)  //网页加载完毕;
     {
    closedialog( );//自定义
      }
     else  //正在加载;
     {
        opendialog(newProgress);//自定义;
      }
   }
}

private void openDialog(int newProgress)
{
   if(progressDialog==null)
   {
      progressDialog=new ProgressDialog(MainActivity.this);
      /*
          调用progressDialog的
          setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
          调用setTitle的方法,来设置标题;
          调用setMessage的方法,来设置对话框中的文字信息;
       */
     progressDialog.setProgress(newProgress);
     progressDialog.show();
   }
   else
   {
      progressDialog.setProgress(newProgress);
      
   }
}


private void closedialog()
{
   if(dialog!=null&&dialog.isShowing())
   {
      dialog.dismiss();
      dislog=null;
   }
}


webView缓存的应用:可以提高下次打开相同的页面的速度
setting为设置javascript时的websettings;
 优先使用缓存:
   setting.setCacheMode(WedSetting.LOAD_CACHE_ELSE_NETWORK);
 不使用缓存(默认):
   setting.getSettings().setCacheMode(WedSetting.LOAD_NO_CACHE);

清除缓存:尝试一下使用getCacheDir()方法获取缓存路径,然后删除缓存的文件;

WebViewClient()的功能是帮助webView处理一些页面控制盒请求通知;

webView.getUrl()获得当前的地址;
0 0
原创粉丝点击