Android中WebView拿到当前的网址和上一页面的网址

来源:互联网 发布:nodejs php 网站 编辑:程序博客网 时间:2024/06/03 13:56

项目结构:


代码:

MainActivity
package com.zhh.mytestwebview;import android.app.Activity;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.webkit.WebBackForwardList;import android.webkit.WebChromeClient;import android.webkit.WebHistoryItem;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.LinearLayout;import android.widget.ProgressBar;import android.widget.RelativeLayout;public class MainActivity extends Activity {   private WebView wvShowDetails;    private ProgressBar pbComplete;    //  比分直播    private String rootUrl = "http://m.zhcw.com/zixun/live.jsp?type=sp";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        wvShowDetails = findViewById(R.id.wvShowDetails);        pbComplete = findViewById(R.id.pbComplete);        setWebView(rootUrl);        myOnclick();    }    /**     * 加载webView的方法     */    private void setWebView(String url) {        //      对webView的设置        WebSettings webSettings = wvShowDetails.getSettings();        webSettings.setJavaScriptEnabled(true);        webSettings.setUseWideViewPort(true);        webSettings.setLoadWithOverviewMode(true);        //     设置进度条        wvShowDetails.setWebChromeClient(new WebChromeClient() {            @Override            public void onProgressChanged(WebView view, int newProgress) {                super.onProgressChanged(view, newProgress);                if (newProgress == 100) {                    pbComplete.setVisibility(View.INVISIBLE);                } else {                    if (View.INVISIBLE == pbComplete.getVisibility()) {                        pbComplete.setVisibility(View.VISIBLE);                    }                    pbComplete.setProgress(newProgress);                }            }        });        /**         * 拿到当前页面的路径         */        wvShowDetails.setWebViewClient(new WebViewClient(){            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {//              当前的路径穿进去处理                isTitleChange(url);                return super.shouldOverrideUrlLoading(view, url);            }        });        wvShowDetails.loadUrl(url);    }    private void myOnclick(){//      监听返回键        wvShowDetails.setOnKeyListener(new View.OnKeyListener() {            @Override            public boolean onKey(View v, int keyCode, KeyEvent keyEvent) {                if ((keyCode == KeyEvent.KEYCODE_BACK) && wvShowDetails.canGoBack()) {                    if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { //只处理一次                        myLastUrl();                    }                    return true;                }                return false;            }        });    }    /**     * 拿到上一页的路径     */    private  void myLastUrl(){        WebBackForwardList backForwardList = wvShowDetails.copyBackForwardList();        if (backForwardList != null && backForwardList.getSize() != 0) {            //当前页面在历史队列中的位置            int currentIndex = backForwardList.getCurrentIndex();            WebHistoryItem historyItem =                    backForwardList.getItemAtIndex(currentIndex - 1);            if (historyItem != null) {                String backPageUrl = historyItem.getUrl();//                Logger.t("111").d("拿到返回上一页的url"+backPageUrl);                wvShowDetails.goBack();//              重新判断设置标题                isTitleChange(backPageUrl);            }        }    }    /**     * 判断标题是否改变     */    private void isTitleChange(String url){        String myurl="type=sp";        if(url.contains(myurl)) {//                  包含说明是内页            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);            int top=dip2px(this,-35f);            lp.setMargins(0,top,0,0);            wvShowDetails.setLayoutParams(lp);        }else{//                  不包含说明是外面页            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);            lp.setMargins(0,0,0,0);            wvShowDetails.setLayoutParams(lp);        }    }    /**     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)     */    public static int dip2px(Context context, float dpValue) {        final float scale = context.getResources().getDisplayMetrics().density;        return (int) (dpValue * scale + 0.5f);    }}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    xmlns:app="http://schemas.android.com/apk/res-auto"    tools:context="com.zhh.mytestwebview.MainActivity"    android:orientation="vertical"   >        <ProgressBar            android:id="@+id/pbComplete"            style="?android:attr/progressBarStyleHorizontal"            android:layout_width="match_parent"            android:layout_height="2dp"            android:layout_alignParentBottom="true"            android:progressDrawable="@drawable/progressbar" />    <WebView        android:id="@+id/wvShowDetails"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="#FF33FF"        android:layout_marginTop="-35dp"        >    </WebView></LinearLayout>
开网络权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
源码下载:

http://download.csdn.net/download/zhaihaohao1/10151527