我有一个应用程序,打开浏览器给用户给定的URL。这应该指向某个没有身份验证的登录页面。是否有可能检测用户何时单击登录以转到我稍后可以为HTML源解析的成员页面?我只是在寻找某种页面更改检测。
编辑:我现在正在使用WebView。到目前为止,这是新WebView活动类的一部分:
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("theurl(removed)"); // Removed url for StackOverflow
mWebView.loadUrl("javascript:document.getElementById('sid').value = 'name';"); // Supposed to autofill a particular input with id 'sid'
尝试首先更改页面上输入的值,但无济于事。
答案 0 :(得分:1)
是否可以检测用户何时单击登录以转到我稍后可以解析HTML源的成员页面?
不使用独立浏览器。那将是一场安全和隐私的噩梦。
欢迎您将WebView
小部件嵌入到您的应用中,让用户通过它登录,然后使用JavaScript从任何结果页面中获取数据。
答案 1 :(得分:1)
首先,您应该在应用程序中打开网址,只需使用带有自定义WebViewClient的WebView:
WebView myWebView = (WebView) findViewById(R.id.mywebview);
CustomWebViewClient webViewClient = new CustomWebViewClient();
myWebView.setWebViewClient(webViewClient);
用它打开你的网址:
myWebView.loadUrl("http://myurl.com");
private class CustomWebViewClient extends WebViewClient {
@Override
/**
* I assume the url changes when the user clicks login, so parse the url and do the right stuff
* I look for a fictitious sessionkey here
*/
public void onLoadResource(WebView view, String url) {
try {
String sessionKey = URLDecoder.decode(view.getUrl().split("session_key=")[1], "UTF-8");
if ( sessionKey == 1337)
{
...
}
}
catch (Exception e) {
e.printStackTrace();
}
super.onLoadResource(view, url);
}
@Override
/**
* Take control over the loaded url so the url is open in the current Webview and not with the default browser of Android
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
}