2012-03-31 142 views
0

我有一个应用程序,打开浏览器给用户给定的网址。这应该指向一个没有认证的特定登录页面。是否有可能检测到用户单击登录时转到会员页面,以后我可以解析HTML源代码?我只是寻找某种页面变化检测。使用Android浏览器 - 检测页面变化

编辑:我现在使用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' 

试图在页面上输入的第一个变化值,都无济于事。

回答

1

是否有可能检测到用户单击登录时转到会员页面,以后我可以解析HTML源代码?

不使用独立浏览器。这将是一个安全和隐私的噩梦。

欢迎您将WebView小部件嵌入到您的应用中,让用户通过它登录,然后使用JavaScript从任何生成的页面中获取数据。

+0

我加了我的WebView细节。请看看编辑!你能先告诉我我在做什么错误的输入? – 2012-03-31 21:01:03

+1

@MarkLyons:您正在调用第二个'loadUrl()'太快,因为第一个'loadUrl()'肯定还没有完成。 'loadUrl()'是异步的。 – CommonsWare 2012-03-31 21:27:54

+0

所以我应该使用某种功能来等待页面完全加载? – 2012-03-31 21:29:04

1

首先,你应该打开URL您的应用程序中,只需使用的WebView使用自定义WebViewClient:

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; 
    } 
} 
+0

我已经开始在回答问题之前使用webview。我认为这会更有效地做我现在发现的可能性:我可以在webview中加载url,然后根据之前在app中给出的信息更改输入。我也读过,可以自动为他们点击登录按钮。在新页面加载完成后(在登录按钮onclick后)获取html源代码会更高效吗? – 2012-03-31 21:04:54