android中webview加载本地html并且相互交互

来源:互联网 发布:淘宝店首页装修教程 编辑:程序博客网 时间:2024/06/06 14:02
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView=(WebView)findViewById(R.id.mwebview);
//设置编码
// mWebView.getSettings().setDefaultTextEncodingName("utf-8");

//支持js
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/button.html");

}


html中将应有的方法function放入javascript中不需在body中调用。

android中activity中动作mWebView.loadUrl("javascript:方法名");


打开本包内asset目录下的index.html文件

//mWebView.loadUrl("file:///android_asset/index.html");  


打开本地sd卡内的index.html文件
 //mWebView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");


打开指定URL的html文件
//mWebView.loadUrl("http://wap.baidu.com");

交互的时候可能出现onkeydown函数没执行的情况,此时可以根据dispatchkeyevent函数进行判断,此函数在按键按下和抬起分别执行一次,应根据event.getEvent()的值判断用户是否按下按钮或抬起按钮,当event.getEvent()==0,表示按下。当event.getEvent()==1,表示抬起。而event.getKeyCode()的值表示按键的键值。可以根据键值进行相关操作。



加载百度等页面可能出现在机器的自带浏览器上显示,此时如果不想在自带浏览器上显示而是想在webview本身上显示则:

mWebView.setWebViewClient(new WebViewClient() {  
            //点击网页中按钮时,在原页面打开  
            public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                view.loadUrl(url);  
                return true;  
            }  
            //页面加载完成后执行  
            @Override  
            public void onPageFinished(WebView view, String url) {  
                super.onPageFinished(view, url);  
                //例如有的网页想限制打开时可以在此方法中另外输入程序。 
            }  
              
        }); 



如果希望浏览的网页后退而不是推出浏览器,需要webview覆盖url加载,让它自动生成历史的访问记录,那样就可以通过后退或前进访问已访问过的站点

public boolean onKeyDown(int keyCode,KeyEvent event){

if(keyCode==KeyEvent.KEYCODE_BACK){

if(webview.canGoBack){

webview.goBack();//返回上一页

}else{

System.exit(0);//退出程序

}

}

}

0 0