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

How to check if the webView has loaded the next page in Android?

当应用程序打开时,一个 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;    }
  1. 对于WebView,可以获取当前所在页面的URL 在页面加载完成时。查看@Chintan Soni 发布的答案

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

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

    其中 q 是查询的键(您搜索的字符串)。这里我搜索了'android'.

    所以如果你的URL包含"q=",就说明你搜索过 一些东西并且在搜索结果页面上。

所以你的代码应该是这样的 -

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

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

mWebView.setWebViewClient(new WebViewClient() {

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

我真的不知道你在问什么

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

希望对您有所帮助

首先需要定义一个WebView客户端Class

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

第二次像这样编辑Activity main

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);
 }
}

快乐编码