用于网页的Android监听器开始加载?

时间:2014-06-13 13:22:43

标签: java android

我有一个加载网站的简单webview。加载网站后,我有以下内容聚焦/滚动到登录框:

mWebview.setWebViewClient(new WebViewClient(){

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            mWebview.scrollTo(681, 100);

(我听说onPageFinished已被弃用,但它在2.2> 4.4中适用于我,所以我现在暂时离开它。

无论如何,我想某种方式来监视用户实际登录的时间,当页面完成第二次加载时,我可以调用一些js并将它们转发到另一个页面,但是我不知道该怎么做。 :(

我可以在登录后再进行另一次onPageFinished,但我不知道如何开始监控......换句话说,我不能在当前后立即启动另一个onPageFinished,因为它只是自动重定向。 / p>

有没有人有任何建议?我将不胜感激! :)

编辑:

这是我的MainActivity.java类的全部(减去导入标题)。

public class MainActivity extends Activity {

private WebView mWebview ;

@Override
public void onBackPressed() {
    if(mWebview.canGoBack() == true){
        mWebview.goBack();
    }else{
        super.onBackPressed();
    }
}


@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    mWebview  = new WebView(this);

    mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
    mWebview.getSettings().setBuiltInZoomControls(true);

    if(android.os.Build.VERSION.SDK_INT >= 11) {
        mWebview.getSettings().setDisplayZoomControls(false);
    }

    final Activity activity = this;

    mWebview.setWebViewClient(new WebViewClient() {
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
        }
    });

    mWebview .loadUrl("http://example.com");
    setContentView(mWebview );


    mWebview.setWebViewClient(new WebViewClient(){

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            mWebview.scrollTo(681, 100);


        }
    }

    );



}

我想我可能会错过一个大括号,但现在忽略它,哈哈。所以无论如何,在mWebview.scrollTo(最后一行)之后,网页已经完成加载,它只是在登录页面处冷却。用户登录后,页面(显然)开始加载并指向另一个登录后的URL。页面完成第二次加载后,我想用if语句检查URL。

这更有意义吗?对不起,这也让我感到困惑,试图解释一下。

1 个答案:

答案 0 :(得分:0)

通常会有两个单独的URL,一个用于登录后页面,另一个用于登录前页面。您可以使用if语句检查URL以确保您已登录,如果有,则重定向/关闭/无论如何。 我在这里遇到了类似的问题:

Closing a Webview in Android

所以基本上你只想在登录后执行一些JavaScript?我不明白为什么你不能用if语句检查你是否登录,如果你已经登录,那么执行js。 这样的事可能吗?

wv.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        if (url.contains(getString(R.string.loginURL))){
          super.onPageFinished(view, url);
          mWebview.scrollTo(681, 100);
         }else if(url.contains(getString(R.string.loggedInURL))) {
                wv.loadUrl(js goes here);
         }
    }
}

每次在WebView

中加载页面时都会执行此操作