dashan 提交于
利用WebView控件,加载指定的URL。注意AndroidManifest.xml文件中要声明网络访问权限,
<uses-permission
android:name="android.permission.INTERNET" />
打开应用,发现超链接在浏览器中打开了,这不是我想要的效果。解决办法:通过定义一个WebViewClient的子类,重写shouldOverrideUrlLoading方法,使之在应用内打开超链接。
class webViewClient extends WebViewClient {
//重写shouldOverrideUrlLoading方法,使点击链接后不使用浏览器打开。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
return true 表示在应用内打开链接,然后在onCreate方法里通过调用WebView的setWebViewClient方法实现。
show = (WebView) findViewById(R.id.show);
//为WebView设置WebViewClient处理某些操作
show.setWebViewClient(new webViewClient());
WebAPP中一般会用到javascript,如何让Web Android应用支持js呢?
1
2
//支持js
show.getSettings().setJavaScriptEnabled(true);
去掉应用顶部的标题栏
1
2
requestWindowFeature(Window.FEATURE_NO_TITLE);// 填充标题栏
setContentView(R.layout.main);
第一行代码一定要卸载setContentView前面,不能先渲染界面。
最后发现,点击android手机自带的返回键,并没有上线上一个界面,而是回到主屏了。通过重载onKeyDown方法判定是否按下返回键,然后调用goBack()方法,与js的history.back()类似。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && show.canGoBack()) {
show.goBack();// 返回前一个页面
return true;
}
return super.onKeyDown(keyCode, event);
}
启动Activity类全部代码如下:
package cc.yunb.huoban;
import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.Window;
import android.view.KeyEvent;
public class MainActivity extends Activity {
WebView show;
final String url = "http://www.dsjz.cn?m=public&a=index";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 填充标题栏
setContentView(R.layout.main);
this.initView();
}
private void initView() {
show = (WebView) findViewById(R.id.show);
//为WebView设置WebViewClient处理某些操作
show.setWebViewClient(new webViewClient());
//支持js
show.getSettings().setJavaScriptEnabled(true);
//加载地址
show.loadUrl(url);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && show.canGoBack()) {
show.goBack();// 返回前一个页面
return true;
}
return super.onKeyDown(keyCode, event);
}
class webViewClient extends WebViewClient {
//重写shouldOverrideUrlLoading方法,使点击链接后不使用浏览器打开。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
- 登录以发表评论