2014-02-18 82 views
-2

我有一个URL字段在我的WebView,它工作正常,但我希望它在url我每次按下搜索按钮如何在WebView URL中添加前缀?

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) 


//////888888888888888888888888888888888888888888888888888888888888888888888 

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

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

回答

0

在onclick时添加前缀(“https://www.google.com/search?q=”)()方法的按钮,只需连接网址和查询。

@Override 
    public void onClick(View view) { 
     String url = urlEditText.getText().toString(); 
     String prefix = "https://www.google.com/search?q="; 
     if(!url.startsWith("http://") && !url.startsWith("https://")) 
     { 
      url = prefix + url; 
     } 
     if(url.endsWith(".com") || url.endsWith(".as") || url.endsWith(".uk") || url.endsWith(".biz")) 
     { 
      if(!url.startsWith("http://") && !url.startsWith("https://")) 
      { 
       url = "http://" + url; 
      } 
     } 
     if (validateUrl(url)) { 
      webView.getSettings().setJavaScriptEnabled(true); 
      webView.loadUrl(url); 

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

大声笑。你应该发布的问题不是明目张胆的问题:P 因此,你得到了你的问题downvote。无论哪种方式,琼脂dhanyawaad bolna海标记为正确的卡尔登记功能:) – AndyFaizan

+0

PS:我没有downvote :) – AndyFaizan

+0

是的,它是可能的。让我编辑 – AndyFaizan

1

没有什么比这更简单:

之前

webview.loadUrl(url); 

添加

url = "https://www.google.com/search?q=" + url; 

只需记住空格必须用加号(+)来代替。

所以,URL字符串将成为:

url = "https://www.google.com/search?q=" + url.replace(" ", "+"); 
+0

不工作!它是添加一个前缀到我的主页!不是搜索! – Apk

+0

如果您在搜索视图(urlEditText)中输入“猫和狗”并且url等于其内容,那么您将获得“https://www.google.com/search?q=cats and dogs”。请记住,空格必须用加号(+)替换。所以(请参阅我编辑的答案),获取“https://www.google.com/search?q=cats+and+dogs”。尝试点击此链接,你会看到它的作品。 ;) –

+0

我确定。或者我不会说 –

1

这里是我如何做到这一点

String q = ((EditText)bar.findViewById(R.id.browser_searchbar)).getText().toString(); 
    if (q.contains(".")){ 
     if (q.startsWith("http://")||q.startsWith("https://")) 
      WV.loadUrl(q); 
     else if (q.startsWith("www.")) 
      WV.loadUrl("http://"+q); 
     else 
      WV.loadUrl("http://"+q); 
    } 
    else if (q.startsWith("about:")||q.startsWith("file:")) 
     WV.loadUrl(q); 
    else 
     WV.loadUrl("http://www.google.com/#q="+q);