Использование браузера Android - обнаружение изменения страницы - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть приложение, которое открывает браузер для данного пользователя 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 ]

1 голос
/ 01 апреля 2012

Во-первых, вы должны открыть URL внутри вашего приложения, просто используя WebView с пользовательским WebViewClient:

WebView myWebView = (WebView) findViewById(R.id.mywebview);
CustomWebViewClient webViewClient = new CustomWebViewClient();
myWebView.setWebViewClient(webViewClient);

Вы открываете свой URL с этим:

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;
    }
}
1 голос
/ 01 апреля 2012

Можно ли определить, когда пользователь нажимает кнопку входа, чтобы перейти на страницу участника, которую я могу позже проанализировать для источника HTML?

Не используется автономный браузер. Это был бы кошмар безопасности и конфиденциальности.

Вы можете встроить виджет WebView в свое приложение, заставить пользователя войти в него через него, а затем использовать JavaScript для получения данных со всех полученных страниц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...