Как обрабатывать обратные вызовы в webview

Я сейчас работаю над проектом Android и задаюсь вопросом, как делать обратные вызовы в разных веб-обзорах. Я использовал JSInterface для моего проекта. Здесь у меня есть 2 веб-просмотров. У одной есть индексная страница, а другой – наложение (все же html-страница). Я хочу, чтобы какой-либо пользователь нажимал на некоторые ссылки на наложении, он должен запускать функцию обратного вызова, которая написана в java-файле, где Страница индекса была подключена через JSInterface. Это может показаться сбивающим с толку, но я нарисовал что-то, чтобы помочь понять это!

Благодаря! Введите описание изображения здесь

Вы можете использовать настраиваемую схему URL, такую ​​как myurl: // для ваших функциональных ссылок. Затем напишите обработчик событий для события shouldOverrideUrlLoading WebView, в котором вы решаете, как обрабатывать URL-адрес: либо проинструктируйте веб-просмотр загрузить его, либо выполните некоторые пользовательские действия.

@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("myurl://")) { // Parse further to extract function and do custom action } else { // Load the page via the webview view.loadUrl(url); } return true; } 

Я использовал startWith, чтобы проверить URL-адрес этого быстрого и грязного примера, но вы должны рассмотреть возможность использования android.net.Uri.parse для анализа URL-адресов.

Это должно позволить вам вызвать функцию Java foo () без необходимости проходить через первый WebView.

Если вы хотите просмотреть первый веб-просмотр, вы можете вызвать функцию на JSInterface, как это (где webView1 – это первый WebView, полученный через findViewById):

 webView1.loadUrl("javascript:myjsinterface.myjsfunc();")