【问题标题】:Webview URL bar not completing URLWebview URL 栏未完成 URL
【发布时间】:2014-02-04 03:56:11
【问题描述】:

我有一个网页视图和一个 URL 栏以及一个进度条,但问题是,我必须写一个网站的完整地址,如“http://www.google.com/”才能打开它,这可以通过在 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);
}
}

【问题讨论】:

  • 是否有任何错误?
  • 用url传递cookie
  • 在每个请求都验证用户身份??
  • @rup35h 我不知道你的意思是什么
  • 像这样传递你的cookie additionalHttpHeaders.put("cookie",yourcookie); webView.loadUrl(url, additionalHttpHeaders);

标签: android url webview


【解决方案1】:

我应用了这个逻辑......希望它可以帮助你

if (!url.startsWith("https://") && !url.startsWith("http://"))
 {
      url = "http://" + url;
 }

您可以进行类似的更改...我认为它会帮助您不要编写整个 url...如果我错了,请原谅...但是我这样做了,它曾经帮助过我一次...

【讨论】:

  • 但是像“.com”、“.co.in”这样的域名呢?
  • 它有 url.endsWith(suffix);功能......试试这个......但我认为你必须明确提供它......
【解决方案2】:

代替

if (validateUrl(url)) {
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(url);

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

试试这个。它帮助了我:

更新

if (validateUrl(url)) {
    webView.getSettings().setJavaScriptEnabled(true);
    HashMap<String, String> additionalHttpHeaders = new HashMap<String, String>();
    additionalHttpHeaders.put("cookie", yourCookie);
    webView.loadUrl(url, additionalHttpHeaders);
    MainActivity.this.progress.setProgress(0);
}

【讨论】:

  • url无法解析,yourcookie无法解析
  • idk 你在说什么cookie??
  • @apk 页面,您在验证之前尝试在 Webview 中加载。意味着只有登录用户才能访问该页面??
  • 登录是什么意思?我刚刚打开了谷歌,没有在 url 字段中输入完整地址就无法打开
  • 然后使用上面适合您的答案
猜你喜欢
  • 2011-03-10
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
相关资源
最近更新 更多