android webview 解决回退重定向的问题
来源:互联网 发布:php推广链接代码 编辑:程序博客网 时间:2024/06/05 00:57
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; } }}
阅读全文
0 0
- android webview 解决回退重定向的问题
- Android WebView重定向问题的解决方案
- android webView 解决重定向
- Android 解决WebView重定向
- android webview 如何去广告和如何解决重定向返回的问题。
- android webview 如何去广告和如何解决重定向返回的问题。
- 解决Android Webview 重定向无法 goback 的方法
- Android WebView 重定向问题的小研究
- android webView.loadData乱码问题的解决
- Android webview内存泄漏问题的解决
- 安卓webview重定向的解决
- Android WebView页面重定向问题
- Android WebView重定向GOBACK问题
- WebView重定向问题的解决方案
- WebView重定向问题的解决方案
- Android WebView 因重定向无法正常goBack()的一种解决小方案
- 解决Android WebView 乱码问题
- android开发中webview保存cookie问题的解决
- 数据库链接超时(默认8小时)报错:MySQLNonTransientConnectionException
- Leetcode Subsets
- ValueAnimation应用
- android面试总结
- 虚拟机上装oracle,cmd窗口输入法有问题,按了U,I,O,P,J,K,L,M这些键为什么不是UIOPJK
- android webview 解决回退重定向的问题
- 28、不一样的C++系列--继承与多态
- Ubuntu下android手机通过usb连接电脑,显示"???????????? no permissions"问题
- 解决reportmachine导出pdf有蓝色底色问题
- SQL 语法概要
- file命令
- STM32F1(Cortex M3内核)存储器映射
- 常用的下载文件方式
- OpenCV实现人脸识别——EigenFace特征脸法