Определить конкретную страницу веб-просмотра, загруженную в 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);
}
});