Android WebView

主要点:

1.webview内部加载url,并且支持下载等重定向操作,应该设置webviewClient,这个client提供外部加载url时候对url的处理,return false即可,而不是我们经常见的loadurl,returntrue。

2.本地缓存,离网加载 设置缓存模式,并设置缓存路径即可

3.处理返回按钮逻辑:设置setOnkeyListener(),监听返回键

4 支付宝调起处理:在webviewclient中添加代码进行判断处理,因为调起时,并不是一个对外的www开头的网页url,而是一个客户端的请求:

  if( url.startsWith("http:") || url.startsWith("https:") ) {
                    return false;
                }
5.仍然未解决难题:webview返回上一个页面时候调用goback(),会对上一个页面进行刷新,没有办法保持原状态,这个如果大家知道解决方案,欢迎留言提供。

全部代码:

        news_wv.loadUrl(BASE_URL);
        news_wv.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }
        });
        WebSettings settings = news_wv.getSettings();
        settings.setJavaScriptEnabled(true);
        //设置缓存模式
        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        // 开启DOM storage API 功能
        settings.setDomStorageEnabled(true);
        // 开启database storage API功能
        settings.setDatabaseEnabled(true);
        String cacheDirPath = getActivity().getFilesDir().getAbsolutePath() + APP_CACHE_DIRNAME;
        // 设置数据库缓存路径
        settings.setAppCachePath(cacheDirPath);
        settings.setAppCacheEnabled(true);
        news_wv.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
                Uri uri=Uri.parse(url);
                Intent intent=new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);
            }
        });
        news_wv.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if ((keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == MotionEvent.ACTION_UP)&&news_wv.canGoBack()) {
                    handler.sendEmptyMessage(WEBVIEW_GOBACK);
                    return true;
                }
                return false;
            }
        });



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值