【问题标题】:Capture url inside method onBackPressed在方法 onBackPressed 中捕获 url
【发布时间】:2020-05-31 03:18:09
【问题描述】:

当方法 onBackPressed 被触发时,我如何捕获 url?

我已经尝试过使用方法 getUrl(),但它给我带来了我所在页面的 url,而不是我返回的页面。

我需要 shouldOverrideUrlLoading 方法具有的行为,但在 onBackPressed 内部(因为我需要执行相同的条件)。

有没有办法做到这一点?

PS:我正在使用 WebView

我的活动:

public class MainActivity extends AppCompatActivity {
    private WebView myWebView;

    String mosaicUrl = "https://www.mosaicapp.com.br";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        myWebView = findViewById(R.id.webview);

        myWebView.loadUrl(mosaicUrl);

        myWebView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                CookieSyncManager.getInstance().sync();
            }

            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                setContentView(R.layout.activity_error);
            }

            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                int slashslash = url.indexOf("//") + 2;
                String domain = url.substring(slashslash, url.indexOf('/', slashslash));

                ImageView imageview = findViewById(R.id.imageBack);

                if (domain.equals("www.mosaicapp.com.br")) {
                    imageview.setVisibility(View.GONE);
                } else {
                    imageview.setVisibility(View.VISIBLE);
                }

                return false;
            }
        });

        WebSettings webSettings = myWebView.getSettings();

        // Enable JavaScript
        webSettings.setJavaScriptEnabled(true);

        // Return to Home
        ImageView imageBack = findViewById(R.id.imageBack);
        imageBack.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                myWebView.loadUrl(mosaicUrl);
            }
        });
    }

    @Override
    // Detect when the back button is pressed
    public void onBackPressed() {
        if (myWebView.canGoBack()) {
            myWebView.goBack();
        } else {
            // Let the system handle the back button
            super.onBackPressed();
        }
    }
}

【问题讨论】:

  • 您可以发布您的 webView 设置吗?
  • 我用整个活动编辑了帖子。

标签: java android android-studio webview


【解决方案1】:

你需要做的是询问pageFinish,一旦页面完成加载,你必须询问当前的url:

public String currentUrl = "";
webView.setWebViewClient(new WebViewClient() {

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        currentUrl = webView.getUrl();
    }

});

这应该可以完成工作。

【讨论】:

  • 但是这样我如何捕获url?
  • 让我改一下,我对你的要求有错误的想法。
猜你喜欢
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多