Определить конкретную страницу веб-просмотра, загруженную в Android

У нас есть несколько html-страниц (например, abc.com/abc.html, abc.com/xyz.html) для загрузки в одном классе Android для WebView. Теперь я хочу добиться того, чтобы после успешной загрузки какой-либо конкретной страницы я мог идентифицировать конкретную страницу, и от имени этого я могу отображать некоторые сообщения в собственном приложении. Я использовал webview.getTitle() идентифицировать, но это становится изменением некоторое время со страницы веб-просмотра.

2 ответа

Если это только title что вы хотите отслеживать, вы можете реализовать WebChromeClient и слушать событие ReceivedTitle в методе ReceivedTitle()

Вы можете посмотреть на: WebChromeClient

myWebView.setWebChromeClient(new WebChromeClient(){
         onReceivedTitle(WebView webview, String title){
             // put your code here

         }
    }
)

РЕДАКТИРОВАТЬ

  • Вы имеете дело с JavaScript, поэтому вы должны включить его в веб-представлении:

    public class MainActivity extends AppCompatActivity {
    
    private WebView myWebView;
    private TextView myTextView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myWebView = (WebView) findViewById(R.id.webview);
        myWebView.loadUrl("http://example.local/changetitle/");
        myTextView = (TextView) findViewById( R.id.textView);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                myTextView.setText(title);
            }
        });
    }
    

    }

  • Вот пример веб-страницы, проверенной:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title>First Title</title>
 </head>
 <body onload="myFunction();">
  <div id="text">No changes</div>
  <script>
            var i=27
            function myFunction() {
    
                document.title=""+i;
             var x = document.getElementById("text");   // because title won't dispay in the body
             x.innerText = "title : "+document.title;   
             i++;
             setTimeout(myFunction,3000);
            }
  </script>

 </body>
</html>

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

Вы можете сравнить ссылку (URL) перед загрузкой страницы макрочастиц в WebView.

webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                progressBar.setVisibility(View.VISIBLE);

              /* compare your URL from here*/

                updateUrl(url);
            }


            @Override
            public void onPageFinished(WebView view, String url) {
//                progressDialog.dismiss();
                progressBar.setVisibility(View.GONE);
            }
        });
Другие вопросы по тегам