2014-02-18 171 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);