Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结合搜索栏和地址栏的webview-android_Android_Url_Webview - Fatal编程技术网

结合搜索栏和地址栏的webview-android

结合搜索栏和地址栏的webview-android,android,url,webview,Android,Url,Webview,我有一个带有url字段的webview,但我必须键入完整的url才能打开网站(http://和域),那么有没有办法让url栏像搜索栏一样工作 import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.v

我有一个带有url字段的webview,但我必须键入完整的url才能打开网站(http://和域),那么有没有办法让url栏像搜索栏一样工作

import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.CookieManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;

public class MainActivity extends Activity {
private WebView webView;
private EditText urlEditText;
private ProgressBar progress;

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

    urlEditText = (EditText) findViewById(R.id.urlField);
    webView = (WebView) findViewById(R.id.webView);
    webView.setWebChromeClient(new MyWebViewClient());


    CookieManager.getInstance().setAcceptCookie(true);//Enable Cookies


    webView.getSettings().setJavaScriptEnabled(true);//Enable Java Script
    webView.setWebViewClient(new HelloWebViewClient());
    webView.loadUrl("http://www.google.com/"); //Set Home page
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);//Remove ScrollBars
    webView.getSettings().setDefaultFontSize(12);//Set Font Size
    webView.getSettings().setLoadsImagesAutomatically(true);//Enable Image Loading
    webView.getSettings().setPluginState(PluginState.ON);//Enable Flash
    webView.setBackgroundColor(0x00000000);//Transparent Screen When Loading
  //webView.getSettings().setBuiltInZoomControls(true);//Set Zoom Controls 

    webView.getSettings().setAppCacheMaxSize(1024*1024*8);//Set Cache (8mb)
    String appCachePath =           getApplicationContext().getCacheDir().getAbsolutePath();//Set Cache (8mb)
    webView.getSettings().setAppCachePath(appCachePath);//Set Cache (8mb)
    webView.getSettings().setAllowFileAccess(true);//Set Cache (8mb)
    webView.getSettings().setAppCacheEnabled(true);//Set Cache (8mb)
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//Set Cache (8mb)





    progress = (ProgressBar) findViewById(R.id.progressBar);
    progress.setMax(100);

    Button openUrl = (Button) findViewById(R.id.goButton);
    openUrl.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            String url = urlEditText.getText().toString();
            if (validateUrl(url)) {
                webView.getSettings().setJavaScriptEnabled(true);
                webView.loadUrl(url);

                MainActivity.this.progress.setProgress(0);
            }
        }

        private boolean validateUrl(String url) {
            return true;
        }
    });

}

private class MyWebViewClient extends WebChromeClient {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {         
        MainActivity.this.setValue(newProgress);
        super.onProgressChanged(view, newProgress);

    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void setValue(int progress) {
    this.progress.setProgress(progress);       



 }
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url)
{


webview.loadUrl(url);
return true;
}
}
@Override
 public boolean onKeyDown(int keyCode, KeyEvent event)
 {

     if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack())

    {
webView.goBack();
    return true;
    }
    return super.onKeyDown(keyCode, event);
 }}

这就是我所做的。我将其放入一个方法中,当单击键盘输入按钮时,该方法将侦听。根据需要添加尽可能多的顶级域。替换文件的内容

if (validateUrl(url)) {
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(url);
}
与此相关的方法:

if (edittext.getText().toString().contains("http://")
        || edittext.getText().toString()
                .contains("https://")) {
    webView.loadUrl(url);

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(edittext.getWindowToken(),
            0);
    return true;
    } else if (edittext.getText().toString().contains(".com")
        || edittext.getText().toString().contains(".net")
        || edittext.getText().toString().contains(".org")
        || edittext.getText().toString().contains(".gov")) {
    webView.loadUrl("http://"
            + url);

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(edittext.getWindowToken(),
            0);
    return true;
    } else {
    webView.loadUrl("https://www.google.com/search?q="
            + url);

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(edittext.getWindowToken(),
            0);
}