2017-06-01 104 views
-1

我在我的清单中有互联网许可,我试图在我的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); 
} 
+0

你检查过你的日志吗? 另外你想做什么?你想在你的应用程序内部安装浏览器吗?如果是这种情况,请改为使用chrome自定义选项卡。 https://developer.chrome.com/multidevice/android/customtabs但请注意,最低api为16 – hehe

+0

最低api 16,并安装Chrome浏览器? – user8091716

+0

api 16是。如果chrome没有安装,我相信它会使用手机的默认浏览器...... btw,你想做什么?只是将用户重定向到一个url,或者你真的想让用户可以键入的浏览器?因为如果您只是想将用户重定向到浏览器,则不需要webview或chrome自定义选项卡。 – hehe

回答

0

您是否尝试编码您的搜索文本,因为根据我的理解您需要对搜索字符串进行编码。

+0

这是什么意思? – user8091716

+0

它有时搜索,但不搜索大部分时间 – user8091716

+0

你应该尝试使用url编码,并尝试,如果有效。 – saunlogan

相关问题