如何检查 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; }
对于WebView,可以获取当前所在页面的URL
在页面加载完成时。查看@Chintan Soni 发布的答案
对于您搜索的每个查询,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);
}
}
快乐编码
当应用程序打开时,一个 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; }
对于WebView,可以获取当前所在页面的URL 在页面加载完成时。查看@Chintan Soni 发布的答案
对于您搜索的每个查询,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);
}
}
快乐编码