Android Webview URL栏未完成URL
我有一个webview和一个URL栏以及一个进度栏,但问题是,我必须写一个像“”这样的网站的完整地址才能打开它。这可以通过在URL中添加前缀来解决吗?如果是,那怎么办Android Webview URL栏未完成URL,android,url,webview,Android,Url,Webview,我有一个webview和一个URL栏以及一个进度栏,但问题是,我必须写一个像“”这样的网站的完整地址才能打开它。这可以通过在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.OnCl
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);
}
}
我应用了这个逻辑…希望对你有帮助
if (!url.startsWith("https://") && !url.startsWith("http://"))
{
url = "http://" + url;
}
您可以进行类似的更改…我认为这将有助于您不编写整个url…如果我错了,很抱歉…但我这样做了,它曾经帮助过我…而不是
if (validateUrl(url)) {
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
MainActivity.this.progress.setProgress(0);
}
试试这个。它帮助了我:
更新
if(validateUrl(url)){
webView.getSettings().setJavaScriptEnabled(true);
HashMap additionalHttpHeaders=新HashMap();
additionalHttpHeaders.put(“cookie”,yourCookie);
loadUrl(url,AdditionalHttpHeader);
MainActivity.this.progress.setProgress(0);
}
是否有任何错误?在每个请求中传递带有URL的cookie r u验证用户???@rup35h我不知道这是什么意思通过cookie像这样传递附加HttpHeaders.put(“cookie”,你的cookie);loadUrl(url,AdditionalHttpHeader);但是像“.com”和“.co.in”这样的域呢?它有url.endsWith(后缀);函数…尝试一下…但我认为您必须明确地提供它..url无法解析,cookie无法解析DidOK您在谈论什么cookie???@apk页面,您正在验证之前尝试在Webview中加载该页面。意味着只有登录的用户才能访问该页面??您所说的登录是什么意思?我刚打开谷歌,仅此而已,如果不在url字段中键入完整地址,它就不会打开,然后使用上面适合您的答案
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);
}