WebView的一些问题

开发时候我们会经常使用WebView去加载一些网页或者h5,这里我罗列一下我所遇见的一些小问题。

1、 如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

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

2、 想在加载网页时给加载动画,不想加载网页的时候跳转到浏览器,在app中直接加载网页

webview.setWebViewClient(new WebViewClient() {

            //在这里loadurl就能实现app加载网页
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                //隐藏加载动画
                hideLoadingTips();
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                //开启加载动画
                setLoadingTips();
            }
        });

3、加载h5需要定位权限的

webView.setWebViewClient(new WebViewClient());
//webView.loadUrl("http://news.baidu.com/");
webView.loadUrl("file:///android_asset/index.html");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//启用数据库
webSettings.setDatabaseEnabled(true);
Stringdir=this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();

//启用地理定位
webSettings.setGeolocationEnabled(true);
//设置定位的数据库路径
webSettings.setGeolocationDatabasePath(dir);

/**
* 此处很重要,必须要
*/

//***最重要的方法,一定要设置,这就是出不来的主要原因
webSettings.setDomStorageEnabled(true);
webView.setWebChromeClient(new WebChromeClient(){
//配置权限(同样在WebChromeClient中实现)
@Override
    public void onGeolocationPermissionsShowPrompt(String origin,Callback callback) {
//这里直接返回为true,没有给用户提示,想给用户提示的可以自己写一
//个dialog,true和false按照callback格式写就行;
    callback.invoke(origin, true, false);
    super.onGeolocationPermissionsShowPrompt(origin, callback);
    }
});

4、加载图片表格,特别是微信的图片

 WebSettings settings = web.getSettings();
 settings.setJavaScriptEnabled(true);//允许js交互
 settings.setDomStorageEnabled(true);//打开DOM储存API  不打开无法展示表单

5、加载的网页自定义适应手机居中显示

 WebSettings settings = web.getSettings();
 settings.setLoadWithOverviewMode(true);

暂时遇见的只有这些,后续补充!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值