第二个Activety中webview响应代码

webview其实就是一个光秃秃的浏览器,没有任何工具栏,如果没加设置,只能访问纯html而且不能带JS脚本的,所以要设置一下,设置需要在程序里面实例化再设置。

JAVA代码如下,在需要讲解的我都会加上注释,应该能看得懂的。

package com.landscape.meetinghz;


import android.content.SharedPreferences;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.KeyEvent;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;


public class Meeting extends ActionBarActivity {
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

//设置全屏,保留虚拟按键栏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_meeting);

//设置Activety活动期间不锁屏,毕竟是开会嘛,领导讲着,你这里黑屏了不好吧
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

//读取上个Activety保存下来的IP地址,本来可以通过参数传递过来的,但代码有点复杂,而且上个Activety也保存好了,干脆读取出来算了。
        SharedPreferences SP=getSharedPreferences("IPServer",MODE_PRIVATE);
        String ServerIP=SP.getString("LastIP",null);

//实例化webview,名字叫webView。注意,这里没有加定义,定义在上方,已经定义了全局变量private WebView webView;
        webView=(WebView)findViewById(R.id.webView);

//这重写加载URL的方法,主要是拦截里面的URL,在Activety里面打开,否则点击链接会用默认浏览器打开的。
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });

//把webview实例化到ChromeClient,表示用安卓内置的浏览器来打开,主要是webview对一些JS支持不是很好。
        webView.setWebChromeClient(new WebChromeClient()
        {

//重写JsAlert响应代码,因为webview不支持JS的alert弹窗,防止弹窗,开发服务端时尽量不要用alert.

            @Override
            public boolean onJsAlert(WebView view, String url, String message,
                                     JsResult result)
            {
                // TODO Auto-generated method stub
                return super.onJsAlert(view, url, message, result);
            }


        });

//实例化webview设置,对浏览器进行设置
        WebSettings Ws=webView.getSettings();

//设置允许JavaScript,必须这样设置,否则不能响应JavaScript
        Ws.setJavaScriptEnabled(true);

//设置不显示网页缩放按钮,因为这个很难看,而且占屏幕显示空间,容易误操作
        Ws.setDisplayZoomControls(false);

//设置允许页面缩放
        Ws.setBuiltInZoomControls(true);

//设置页面自动适应屏幕,这个很重要,项目是用网页来虚拟APP操作的,这样看起来比较像个app。
        Ws.setUseWideViewPort(true);

//和上面的一样,设置网页超出显示范围时缩小
        Ws.setLoadWithOverviewMode(true);

//设置网页可以通过JS打开新窗口,这个很重要,不设置的话无法通过JS进行页面跳转
        Ws.setJavaScriptCanOpenWindowsAutomatically(true);

//设置网页每次进入清除缓存,这个可以不要,但开发调试期间要这样设置,否则编写服务端时,平板端不会同步更新,要等缓存过期。
        Ws.setCacheMode(WebSettings.LOAD_NO_CACHE);

//重写ChromeClient响应JS的alert,很麻烦,建议在服务端不要用alert,就算重写了,也经常弹不出来的。
        webView.setWebChromeClient(new WebChromeClient(){
            @Override public boolean onJsAlert(WebView view,String url,String message,JsResult result){
                return super.onJsAlert(view,url,message,result);
            }
        });

//加载网页地址,由于读取出来的是IP地址,需要在前面加上http://,在后面加上/
        webView.loadUrl("http://"+ServerIP+"/");

//设置webview获取焦点,不设置的话,网页无法输入内容,但如果是单纯展示内容,不需要输入用户名和密码这类的,可以不设置。
        webView.requestFocusFromTouch();
    }

//重写系统返回键事件响应,不重写的话,按返回键会直接退出的,重写后,按返回键会退回上一页。原理很简单,就是检测当前Activety的按键,看是不是返回键,如果是返回键就看看网页是否可以返回,如果可以返回就返回。
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) &&   webView .canGoBack()) {
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }


}


项目的安卓端就这样了,简单的一个浏览器,下篇讲服务端的开发,使用C#,这是俺的老本行的,比较熟悉了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值