使用Android浏览器 - 检测页面更改

时间:2012-03-31 20:06:36

标签: android browser

我有一个应用程序,打开浏览器给用户给定的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'

尝试首先更改页面上输入的值,但无济于事。

2 个答案:

答案 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;
    }
}