我正在使用WebView在Android应用中打开网页。 我将布局描述为:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
在Android Manifest文件中添加了以下权限:
<uses-permission android:name="android.permission.INTERNET" />
在我的活动类中使用WebView作为:
WebView theWebPage = new WebView(this);
setContentView(theWebPage);
theWebPage.loadUrl("http://www.google.com");
完成后,我在一些Android手机上运行了应用程序。打开后,应用程序会询问用于打开网页的应用程序(Out of Chrome,Mozilla或手机上安装的任何其他浏览器),即“http://www.google.com”。
我希望应用在其中打开网页。帮助
答案 0 :(得分:1)
您的xml是正确的。您需要setWebViewClient
作为您的自定义。
这是制作简单浏览器的代码。也许这可以帮助你澄清你的疑虑。
<强> Broweser.java 强>
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simplebrowser);
ourBrow = (WebView)findViewById(R.id.wvBrowser);
ourBrow.getSettings().setJavaScriptEnabled(true);
ourBrow.getSettings().setLoadWithOverviewMode(true);
ourBrow.getSettings().setUseWideViewPort(true);
ourBrow.setWebViewClient(new ourViewClient());
ourBrow.getSettings().setBuiltInZoomControls(true);
try{
ourBrow.loadUrl("http://www.google.com");
}catch(Exception e){
e.printStackTrace();
}
Button go = (Button)findViewById(R.id.bGo);
Button back = (Button)findViewById(R.id.bBack);
Button refresh = (Button)findViewById(R.id.bRefresh);
Button forward = (Button)findViewById(R.id.bForward);
Button clearHistory = (Button)findViewById(R.id.bHistory);
url = (EditText)findViewById(R.id.etURL);
go.setOnClickListener(this);
back.setOnClickListener(this);
refresh.setOnClickListener(this);
forward.setOnClickListener(this);
clearHistory.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.bGo:
String theWebSite = url.getText().toString();
ourBrow.loadUrl(theWebSite);
//hiding keyboard after the input in EditText
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(url.getWindowToken(),0);
break;
case R.id.bBack:
if(ourBrow.canGoBack())
ourBrow.goBack();
break;
case R.id.bRefresh:
ourBrow.reload();
break;
case R.id.bForward:
if(ourBrow.canGoForward())
ourBrow.goForward();
break;
case R.id.bHistory:
ourBrow.clearHistory();
break;
}
}
<强> ourViewClient.java 强>
public class ourViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView v,String url){
v.loadUrl(url);
return true;
}
答案 1 :(得分:0)
您需要设置自定义WebViewClient
并覆盖shouldOverrideUrlLoading
http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView,java.lang.String)