如何在WebView URL中添加前缀?
我有一个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);
}
}
在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);
}
}
没有什么比这更简单:
之前
webview.loadUrl(url);
添加
url = "https://www.google.com/search?q=" + url;
只需记住空格必须用加号(+)来代替。
所以,URL字符串将成为:
url = "https://www.google.com/search?q=" + url.replace(" ", "+");
不工作!它是添加一个前缀到我的主页!不是搜索! – Apk
如果您在搜索视图(urlEditText)中输入“猫和狗”并且url等于其内容,那么您将获得“https://www.google.com/search?q=cats and dogs”。请记住,空格必须用加号(+)替换。所以(请参阅我编辑的答案),获取“https://www.google.com/search?q=cats+and+dogs”。尝试点击此链接,你会看到它的作品。 ;) –
我确定。或者我不会说 –
这里是我如何做到这一点
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);
大声笑。你应该发布的问题不是明目张胆的问题:P 因此,你得到了你的问题downvote。无论哪种方式,琼脂dhanyawaad bolna海标记为正确的卡尔登记功能:) – AndyFaizan
PS:我没有downvote :) – AndyFaizan
是的,它是可能的。让我编辑 – AndyFaizan