可以執行JavaScript來傳遞加載回包含它通過註冊JavascriptInterface
您可以創建在活動界面爲私有內部類活動中的HTML內容:
private class MyJavaScriptInterface {
@JavascriptInterface
public void handleHtml(String html) {
// Use jsoup on this String here to search for your content.
Document doc = Jsoup.parse(html);
// Now you can, for example, retrieve a div with id="username" here
Element usernameDiv = doc.select("#username").first();
}
}
然後,將這個附加到你的WebView:
webview.addJavascriptInterface(new MyJavaScriptInterface(), "HtmlHandler");
最後,添加WebViewClient
,將調用此javascript方法每次頁面加載完成。您將不得不根據當時的頁面內容確定用戶何時登錄:
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webview.loadUrl("javascript:window.HtmlHandler.handleHtml" +
"('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
}
});
我不確定我知道如何使用jsoup檢查某個div是否存在於網站上?我應該連接jsoup到什麼?你能編輯你的問題,並更深入地解釋「handleHtml」部分嗎?提前致謝! –
'handleHtml(String html)'是你的回調函數,在這個時候你將會傳遞一個包含頁面完整HTML內容的String。您可以像平常一樣使用JSoup來解析此String並處理結果。我編輯了我的回答,以顯示第一次給JSoup的電話。 – mattgmg1990
現在我得到這個錯誤:11-19 04:56:05.787 899-899/ba.gamers.gamersba I/chromium:[INFO:CONSOLE(1)]「Uncaught TypeError:Object [object Object] has no method'handleHTML '「,來源:http://www.mywebsite.com/(1) 11-19 04:56:05.817 899-899/ba.gamers.gamersba I/chromium:[INFO:CONSOLE(1)]」Uncaught TypeError:無法設置null的屬性「值」,來源:http://www.mywebsite.com/(1) –