Как вызывается shouldOverrideUrl

Я новичок в разработке Android. Недавно меня попросили кое-что узнать о загрузке веб-просмотра для нашего приложения, написанного с помощью flutter и использующего flutter_webview_plugin.

После того, как я обновил версию flutter_webview_plugin, я обнаружил, что есть некоторые изменения.

И код есть в flutter_webview_plugin

 @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        Map<String, Object> data = new HashMap<>();
        data.put("url", url);
        data.put("type", "startLoad");
        FlutterWebviewPlugin.channel.invokeMethod("onState", data);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        Map<String, Object> data = new HashMap<>();
        data.put("url", url);

        FlutterWebviewPlugin.channel.invokeMethod("onUrlChanged", data);

        data.put("type", "finishLoad");
        FlutterWebviewPlugin.channel.invokeMethod("onState", data);

    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        // returning true causes the current WebView to abort loading the URL,
        // while returning false causes the WebView to continue loading the URL as usual.
        String url = request.getUrl().toString();
        boolean isInvalid = checkInvalidUrl(url);
        Map<String, Object> data = new HashMap<>();
        data.put("url", url);
        data.put("type", isInvalid ? "abortLoad" : "shouldStart");

        FlutterWebviewPlugin.channel.invokeMethod("onState", data);
        return isInvalid;
    }

Я пробовал искать везде, используя shouldOverrideUrlLoading, onPageStarted,onPageFinished, но не могу найти, где они вызваны. Я думаю, что их следует использовать как:

BrowserClient webViewClient;
webviewClient.shouldOverrideUrlLoading() 

or

webViewClient.invokeMethod('shouldOverrideUrlLoading',arg)

что-то вроде выше. Но я ничего не могу найти.


person Carrie    schedule 07.10.2019    source источник
comment
Веб-просмотр сам вызывает эти методы, реализуя их и возвращая значение истина / ложь, вы можете решить, разрешить ли веб-просмотру загружать определенный URL-адрес или нет.   -  person SteelToe    schedule 07.10.2019
comment
распространенный вариант использования - запретить пользователю уходить с вашего сайта.   -  person SteelToe    schedule 07.10.2019
comment
О, понял, спасибо @SteelToe   -  person Carrie    schedule 07.10.2019


Ответы (1)


WebView сам вызывает эти методы, когда страница должна быть загружена.

Допустим, WebView пытается загрузить www.google.com, метод shouldOverrideUrlLoading получит вызов с веб-адресом www.google.com, переданным в аргумент request.

Вы можете вернуть true или false, чтобы сообщить WebView, должен ли он загружать URL-адрес или должен его останавливать.

Типичный вариант использования - предотвратить переход пользователя с определенной веб-страницы в браузере приложения.

Надеюсь это поможет!!

person SteelToe    schedule 08.10.2019