相关疑难解决方法(0)

android webview backkey中的死循环,用于重定向href链接

在处理重定向链接时,我在Android webview应用程序中使用反键进入死循环.

例如,当我的webview开始时,它将转到link0.

在link0中,有一个链接到link1的href链接.Link1重写到link2.

因此,如果我单击link1,它将转到link1,然后重定向到link2.当我点击返回键时,它应该返回到link0,在我的情况下.但相反,它转到link1,它再次重定向回link2.所以我再也没有机会回去了.

如果它们不是重定向链接,则反向键可以与其他链接正常工作.

我用Google搜索网页寻求帮助,但未找到相关问题.

顺便说一下,反密钥在互联网浏览器中按预期工作.但不是在webview中.

以下是我的代码,供您试用.正如你在代码中看到的那样,我尝试了onBackPressed和onKeyDown,但是更好的是.

谢谢你的帮助.我对此持续了一段时间.

================================================== ================================

public class MyActivity extends Activity 
{
    private WebView myWebView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myWebView = (WebView) findViewById(R.id.webview);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.loadUrl("http://50.112.242.120/temp/");
        myWebView.setWebViewClient(new MyWebViewClient());
    }

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            myWebView.loadUrl(url);
            return true;
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // Check if the key event …
Run Code Online (Sandbox Code Playgroud)

mobile android webview

10
推荐指数
2
解决办法
3906
查看次数

如何控制Android WebView历史/后台堆栈?

我试图找到一种方法来处理WebView后台堆栈,类似于Android Web浏览器在我自己的应用程序的WebView中按下后退按钮时如何处理它.

问题与Javascript重定向有关.WebView后备堆栈似乎包含只是重定向的URL.这是我的相关代码:

private class ArticleWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
        WebView wv = (WebView)findViewById(R.id.web);
        if (wv.canGoBack())
        {
            wv.goBack();

            return true;
        }
    }

    return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)

如您所见,按后退按钮可选择堆栈中的先前URL,该URL在调用shouldOverrideUrlLoading()之后加载到WebView本身.我实际上在shouldOverrideUrlLoading()中做了很多与这个特定问题无关的事情,所以"删除我的WebViewClient实现"对我来说不起作用.无论如何,当前一个URL是Javascript重定向时,该URL加载,然后Javascript立即重定向到WebView所在的URL.我无法禁用Javascript,因为网站依赖于它.我也无法更改网站(第三方).

这种重定向问题的结果是最终用户的恶性循环,他们疯狂地回击只是比Android网页处理引擎稍快.

现在这里有趣的地方:Android网页浏览器处理后退按钮就好了Javascript重定向!它遵循重定向很好,但后退按钮执行用户期望它做的事情.这意味着可以正确处理这种情况.Android Web浏览器如何处理此问题?

android

9
推荐指数
2
解决办法
3万
查看次数

标签 统计

android ×2

mobile ×1

webview ×1