webView的简单实际使用

来源:互联网 发布:淘宝店铺修改退货地址 编辑:程序博客网 时间:2024/06/11 21:41
关键性代码,仅参考:
初始化常量
// 支付的urlprivate static final String ORDER_URL = "http://www.pgagolf.cn/?OrderID";// 荣耀服务的urlprivate static final String HONOR_SERVER_URL = "home/license";// 我的活动urlprivate static final String MY_COMPETITION_URL = "Activityapp/MyActivityList";// 拨号urlprivate static final String CALL_TEL_URL = "tel:";// 保存相册urlprivate static final String SAVE_TO_PHOTO_ALBUMS_URL = "isAndroid:";// 跳到我的报名页private static final String JUMP_TO_SIGN_UP_URL = "Activity/MyActivityList";private LinkedList<String> loadHistoryUrls;private String orderId;private ValueCallback<Uri> mUploadMessage;private ValueCallback<Uri[]> mUploadMessage5;public static final int FILECHOOSER_RESULTCODE = 5173;public static final int FILECHOOSER_RESULTCODE_FOR_ANDROID_5 = 5174;

private String weburl="http://app.pgagolf.cn/ActivityAPP/EventActivities?eventActivity_id=146&userId=sIBjQA5lex9CPzsqQXYifPT37uT3L/ICfvpyOzAJBVI=&isAndroid=Android";
页面加载布局之后
webView.loadUrl(weburl);
WebSettings settings = webView.getSettings();//设置WebView是否允许执行JavaScript脚本,默认false,不允许settings.setJavaScriptEnabled(true);//是否开启本地DOM存储  可处理一些手机显示空白问题settings.setDomStorageEnabled(true);//设置自适应屏幕宽度settings.setUseWideViewPort(true);settings.setLoadWithOverviewMode(true);settings.setDefaultTextEncodingName("utf-8");//设置是否支持缩放settings.setSupportZoom(true);settings.setBuiltInZoomControls(true);//设置缓存,否则后台重定向返回后导致缓存丢失settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//android5.0以上不显示图片的解决办法if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {    settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);}
/处理webview URL跳转事件        webView.setWebViewClient(new WebViewClient() {            @Override            public void onPageFinished(WebView view, String url) {                super.onPageFinished(view, url);            }            @Override            public void onPageStarted(WebView view, String url, Bitmap favicon) {                super.onPageStarted(view, url, favicon);                loadHistoryUrls.add(url);            }            @Override            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {                //接收所有证书                handler.proceed();//                super.onReceivedSslError(view, handler, error);            }            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                System.out.println("url="+url);                if (url.contains(MY_COMPETITION_URL)) {                    //我的活动                    startActivity(new Intent(EventDetailActivity.this, MyEventActivity.class));                    return true;                } else if (url.contains(CALL_TEL_URL)) {                    //电话                    final String phoneStr = url.substring(4);                    callPhone(phoneStr);                    return true;                } else if (url.contains(HONOR_SERVER_URL)) {                    //荣耀服务条款                    startActivity(new Intent(EventDetailActivity.this, ServiceTermsActivity.class));                    return true;                } else if (url.contains(SAVE_TO_PHOTO_ALBUMS_URL)) {                    //保存到相册                    return true;                } else if (url.contains(JUMP_TO_SIGN_UP_URL)) {                    //返回我的参加的活动                    startActivity(new Intent(EventDetailActivity.this, MyEventActivity.class));                    finish();                    return true;                } else if (url.contains(ORDER_URL)) {                    //支付                    orderId = url.substring(url.indexOf("=") + 1);                    accessOrder();                    return true;                }else {                }                return super.shouldOverrideUrlLoading(view, url);            }        });        setWebChromeClient();//处理android系统webView调用H5文件上传JS无反应操作
/** *  TODO 处理android系统webView调用H5文件上传JS无反应操作 */private void setWebChromeClient(){    webView.setWebChromeClient(new WebChromeClient() {        // For Android < 3.0        public void openFileChooser(ValueCallback<Uri> uploadMsg){            this.openFileChooser(uploadMsg, "*/*");        }        // For Android >= 3.0        public void openFileChooser(ValueCallback<Uri> uploadMsg,                                    String acceptType) {            this.openFileChooser(uploadMsg, acceptType, null);        }        // For Android >= 4.1        public void openFileChooser(ValueCallback<Uri> uploadMsg,                                    String acceptType, String capture) {            mUploadMessage = uploadMsg;            Intent i = new Intent(Intent.ACTION_GET_CONTENT);            i.addCategory(Intent.CATEGORY_OPENABLE);            i.setType("*/*");            startActivityForResult(Intent.createChooser(i, "File Browser"),                    FILECHOOSER_RESULTCODE);        }        // For Lollipop 5.0+ Devices        @TargetApi(Build.VERSION_CODES.LOLLIPOP)        public boolean onShowFileChooser(WebView mWebView,                                         ValueCallback<Uri[]> filePathCallback,                                         WebChromeClient.FileChooserParams fileChooserParams) {            if (mUploadMessage5 != null) {                mUploadMessage5.onReceiveValue(null);                mUploadMessage5 = null;            }            mUploadMessage5 = filePathCallback;            Intent intent = fileChooserParams.createIntent();            try {                startActivityForResult(intent,                        FILECHOOSER_RESULTCODE_FOR_ANDROID_5);            } catch (ActivityNotFoundException e) {                mUploadMessage5 = null;                return false;            }            return true;        }        @Override        public void onProgressChanged(WebView view, int newProgress) {            if (newProgress == 100) {                // 网页加载完成                pb.setVisibility(View.GONE);            } else {                // 加载中                pb.setVisibility(View.VISIBLE);                pb.setProgress(newProgress);            }            super.onProgressChanged(view, newProgress);        }    });}@SuppressLint("NewApi")@Overrideprotected void onActivityResult(int requestCode, int resultCode,                                Intent intent) {    super.onActivityResult(requestCode, resultCode, intent);    if (requestCode == FILECHOOSER_RESULTCODE) {        if (null == mUploadMessage) {            return;        }        Uri result = intent == null || resultCode != Activity.RESULT_OK ? null                : intent.getData();        mUploadMessage.onReceiveValue(result);        mUploadMessage = null;    } else if (requestCode == FILECHOOSER_RESULTCODE_FOR_ANDROID_5) {        if (null == mUploadMessage5) {            return;        }        mUploadMessage5.onReceiveValue(WebChromeClient.FileChooserParams                .parseResult(resultCode, intent));        mUploadMessage5 = null;    }}


原创粉丝点击