android webview 解决回退重定向的问题
2017-06-20 10:26
666 查看
public class MainActivity extends AppCompatActivity { private WebView webview; private MyWebViewClient webViewClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webview = (WebView) findViewById(R.id.webview); webViewClient = new MyWebViewClient(); webview.getSettings().setJavaScriptEnabled(true); webview.setWebViewClient(webViewClient); webview.loadUrl("https://m.taobao.com/"); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return pageGoBack(webview,webViewClient); } public boolean pageGoBack(WebView web, MyWebViewClient client) { final String url = client.popLastPageUrl(); if (url != null) { web.loadUrl(url); return true; } finish(); return false; } class MyWebViewClient extends WebViewClient{ /** * 记录URL的栈 */ private final Stack<String> mUrls = new Stack<>(); /** * 判断页面是否加载完成 */ private boolean mIsLoading; private String mUrlBeforeRedirect; @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); if (mIsLoading && mUrls.size() > 0) { mUrlBeforeRedirect = mUrls.pop(); } recordUrl(url); this.mIsLoading = true; } /** * 记录非重定向链接, 避免刷新页面造成的重复入栈 * * @param url 链接 */ private void recordUrl(String url) { //这里还可以根据自身业务来屏蔽一些链接被放入URL栈 if (!TextUtils.isEmpty(url) && !url.equalsIgnoreCase(getLastPageUrl())) { mUrls.push(url); } else if (!TextUtils.isEmpty(mUrlBeforeRedirect)) { mUrls.push(mUrlBeforeRedirect); mUrlBeforeRedirect = null; } } /** * 获取上一页的链接 **/ private synchronized String getLastPageUrl() { return mUrls.size() > 0 ? mUrls.peek() : null; } /** * 推出上一页链接 */ public String popLastPageUrl() { if (mUrls.size() >= 2) { mUrls.pop(); //当前url return mUrls.pop(); } return null; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (this.mIsLoading) { this.mIsLoading = false; } } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } } }
相关文章推荐
- android webview 解决回退重定向的问题
- Android Webview重定向问题解决方法
- android webview 如何去广告和如何解决重定向返回的问题。
- android webview 如何去广告和如何解决重定向返回的问题。
- Android进阶---Android Webview重定向问题解决
- Android WebView 软键盘遮挡输入框问题的解决方法
- 如何解决Android WebView出现的乱码问题
- android webview内容压线问题解决方法
- android开发中webview保存cookie问题的解决
- [android webview]android webview loadData乱码问题解决方法
- android webview ZoomButtonsController 导致android.view.WindowLeaked 问题彻底解决
- Android中的WebView进行直接加载网页(要注意解决权限问题)
- android webview 显示空白页问题解决
- 如何解决Android WebView出现的乱码问题
- 【Android】4.04系统WebView播放不了Flash问题的解决办法
- android :webview 解决遇到的跨域问题
- android webview 字体切换 反白乱的问题解决
- 如何解决Android WebView出现的乱码问题
- Android webview通过http get下载文件下载两次的问题及解决方法
- Android 使用Webview无法播放视频问题的解决办法