我在我的清单中有互联网许可,我试图在我的webview的搜索栏上搜索“脸谱”,但问题是,对于50%的搜索,它不会加载搜索请求!这太奇怪了,令人沮丧。我正确实施了一切,并检查了所有内容3次,但没有运气。每次我在其他浏览器上搜索相同的内容时,它总是有效。但是当我在我的webview上搜索时,它有时会加载页面,并且大多数时候进度条显示加载,并且消失,就好像页面实际加载一样,但它仍然是白色的。这是为什么发生?为什么webview不总是工作?
public class MainActivity extends AppCompatActivity {
private EditText searchEditText;
private ProgressBar progressBar;
private WebView webView;
private String SearchString = "https://www.google.co.in/search?q=";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax(100);
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClientDemo());
webView.setWebChromeClient(new WebChromeClientDemo());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("about:blank");
// use keyboard go button to search
searchEditText = (EditText) findViewById(R.id.searchfield);
searchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
CustomSearch();
return false;
}
});
}
private class WebViewClientDemo extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
progressBar.setProgress(100);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(getBaseContext(), "page error. please try again!", Toast.LENGTH_SHORT).show();
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
private class WebChromeClientDemo extends WebChromeClient {
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
}
public void CustomSearch() {
searchEditText = (EditText) findViewById(R.id.searchfield);
String url = searchEditText.getText().toString();
url = SearchString + url.replace(" ", "+");// replace_spaces_with_a_"+"_sign(prefix)
webView.loadUrl(url);
}
你检查过你的日志吗? 另外你想做什么?你想在你的应用程序内部安装浏览器吗?如果是这种情况,请改为使用chrome自定义选项卡。 https://developer.chrome.com/multidevice/android/customtabs但请注意,最低api为16 – hehe
最低api 16,并安装Chrome浏览器? – user8091716
api 16是。如果chrome没有安装,我相信它会使用手机的默认浏览器...... btw,你想做什么?只是将用户重定向到一个url,或者你真的想让用户可以键入的浏览器?因为如果您只是想将用户重定向到浏览器,则不需要webview或chrome自定义选项卡。 – hehe