如何检查webView是否已在Android中加载下一页?

时间:2017-05-01 04:43:01

标签: android android-studio android-webview

打开应用程序后,webView会打开“www.google.com”。如果用户键入某个查询并按下搜索(在WebView本身,而不是Android按钮),则加载下一页。现在我需要知道webView是否已加载下一页作为查询的搜索结果。

是否有任何内置方法可以检查?

编辑1

实施Asuthosh Panda和Chintan Soni的方法。它仍然无法正常工作。这是在一个片段中实现的。这会以任何方式影响代码吗?

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    String url;
    //String urrrl=null;
    View view =  inflater.inflate(R.layout.fragment_net_con, container, false);
    myWebView = (WebView)view.findViewById(R.id.webView21);

    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    myWebView.loadUrl("https://www.google.com");
    myWebView.setWebViewClient(new WebViewClient());
    url=myWebView.getUrl().toString();
    Log.d("My app msg","I am here");
    Log.d("URL ",url);
    if(url.contains("q=")){
        System.exit(1);
    }
    activityCommander.setwebs(myWebView.getUrl());

    return view;    }

3 个答案:

答案 0 :(得分:3)

您可以使用WebViewClient设置回调,如下所示:

mWebView.setWebViewClient(new WebViewClient() {

   public void onPageFinished(WebView view, String url) {
        // do your stuff here
    }
});

答案 1 :(得分:3)

我不知道你在问什么

所以,我正在分享我的简单浏览器项目代码

希望它会帮助你

首先,您需要定义WebView客户端类

import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MyWebClient extends WebViewClient{
@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

    view.loadUrl(url);

    return true;
 }
}

其次编辑活动主要内容

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}


public void sendGo(View view) {
    Intent intent = new Intent(this,GoActivity.class);
    startActivity(intent);
 }

}

第三,像这样的GGoActivity

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class GoActivity extends Activity {

WebView myWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_go);

    myWebView = (WebView) findViewById(R.id.webview_go);

    myWebView.loadUrl("http://www.google.com");

    myWebView.setWebViewClient(new MyWebClient());

    WebSettings webSettings = myWebView.getSettings();

    webSettings.setJavaScriptEnabled(true);
 }
}

快乐编码

答案 2 :(得分:1)

  1. 对于WebView,您可以获取当前页面的URL 在页面加载完成后。请参阅@Chintan Soni发布的答案

  2. 对于您搜索的每个查询,Google使用Get方法的网址 发送搜索查询看起来像这样 -

      

    https://www.google.co.in/?gfe_rd=cr&ei=psUGWeHZKe3I8Af2rL7YAg#q=android

    其中 q 是查询的关键(搜索到的字符串)。在这里,我搜索了' android'。

    因此,如果您的网址包含" q =",则表示您已搜索过 一些东西,在搜索结果页面上。

  3. 所以你的代码应该是 -

    if(url.contains("q=")){
     // its the search page and not the initial Google home page
    }