ex
Fork of mbed-os-example-mbed5-blinky by
Diff: dcs-sdk-java-master/app/src/main/java/com/baidu/duer/dcs/androidsystemimpl/webview/BaseWebView.java
- Revision:
- 49:b9eb462f36a9
- Parent:
- 48:c7ee67edcf1d
- Child:
- 50:9ecaa144d1f3
--- a/dcs-sdk-java-master/app/src/main/java/com/baidu/duer/dcs/androidsystemimpl/webview/BaseWebView.java Tue Jul 18 16:56:22 2017 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/*
- * Copyright (c) 2017 Baidu, Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.baidu.duer.dcs.androidsystemimpl.webview;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.net.http.SslError;
-import android.os.Build;
-import android.util.AttributeSet;
-import android.webkit.CookieManager;
-import android.webkit.CookieSyncManager;
-import android.webkit.DownloadListener;
-import android.webkit.SslErrorHandler;
-import android.webkit.WebSettings;
-import android.webkit.WebSettings.PluginState;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-import com.baidu.duer.dcs.systeminterface.IWebView;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * common webView
- * <p>
- * Created by zhangyan42@baidu.com on 2017/5/19.
- */
-@SuppressLint("SetJavaScriptEnabled")
-public class BaseWebView extends WebView implements IWebView {
- private final List<IWebViewListener> webViewListeners =
- Collections.synchronizedList(new ArrayList<IWebViewListener>());
-
- public BaseWebView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context);
- }
-
- public BaseWebView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init(context);
- }
-
- public BaseWebView(Context context) {
- super(context);
- init(context);
- }
-
- @SuppressWarnings("deprecation")
- @SuppressLint("NewApi")
- private void init(Context context) {
- this.setVerticalScrollBarEnabled(false);
- this.setHorizontalScrollBarEnabled(false);
- if (Build.VERSION.SDK_INT < 19) {
- removeJavascriptInterface("searchBoxJavaBridge_");
- }
-
- WebSettings localWebSettings = this.getSettings();
- try {
- // 禁用file协议,http://www.tuicool.com/articles/Q36ZfuF, 防止Android WebView File域攻击
- localWebSettings.setAllowFileAccess(false);
- localWebSettings.setSupportZoom(false);
- localWebSettings.setBuiltInZoomControls(false);
- localWebSettings.setUseWideViewPort(true);
- localWebSettings.setDomStorageEnabled(true);
- localWebSettings.setLoadWithOverviewMode(true);
- localWebSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
- localWebSettings.setPluginState(PluginState.ON);
- // 启用数据库
- localWebSettings.setDatabaseEnabled(true);
- // 设置定位的数据库路径
- String dir = context.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
- localWebSettings.setGeolocationDatabasePath(dir);
- localWebSettings.setGeolocationEnabled(true);
- localWebSettings.setJavaScriptEnabled(true);
- localWebSettings.setSavePassword(false);
- String agent = localWebSettings.getUserAgentString();
-
- localWebSettings.setUserAgentString(agent);
- // setCookie(context, ".baidu.com", bdussCookie);
-
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- this.setWebViewClient(new BridgeWebViewClient());
- }
-
- private void setCookie(Context context, String domain, String sessionCookie) {
- CookieSyncManager.createInstance(context);
- CookieManager cookieManager = CookieManager.getInstance();
- cookieManager.setAcceptCookie(true);
- if (sessionCookie != null) {
- // delete old cookies
- cookieManager.removeSessionCookie();
- }
- try {
- Thread.sleep(200);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- cookieManager.setCookie(domain, sessionCookie);
-
- CookieSyncManager.createInstance(context);
- CookieSyncManager.getInstance().sync();
- }
-
- public void setDownloadListener(DownloadListener listener) {
- super.setDownloadListener(listener);
- }
-
- private WebViewClientListener webViewClientListen;
-
- public void setWebViewClientListen(WebViewClientListener webViewClientListen) {
- this.webViewClientListen = webViewClientListen;
- }
-
- /**
- * 枚举网络加载返回状态 STATUS_FALSE:false
- * STATUS_TRUE:true
- * STATUS_UNKNOW:不知道
- * NET_UNKNOWN:未知网络
- */
- public enum LoadingWebStatus {
- STATUS_FALSE, STATUS_TRUE, STATUS_UNKNOW
- }
-
- @Override
- public void linkClicked(String url) {
- fireLinkClicked(url);
- }
-
- @Override
- public void addWebViewListener(IWebViewListener listener) {
- this.webViewListeners.add(listener);
- }
-
- void fireLinkClicked(String url) {
- for (IWebViewListener listener : webViewListeners) {
- listener.onLinkClicked(url);
- }
- }
-
- public interface WebViewClientListener {
- LoadingWebStatus shouldOverrideUrlLoading(WebView view, String url);
-
- void onPageStarted(WebView view, String url, Bitmap favicon);
-
- void onPageFinished(WebView view, String url);
-
- void onReceivedError(WebView view, int errorCode, String description, String failingUrl);
- }
-
- public class BridgeWebViewClient extends WebViewClient {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- LoadingWebStatus loadWebStatus = LoadingWebStatus.STATUS_UNKNOW;
- String mUrl = url;
- try {
- mUrl = URLDecoder.decode(url, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- }
- if (null != webViewClientListen) {
- loadWebStatus = webViewClientListen.shouldOverrideUrlLoading(view, url);
- }
- if (LoadingWebStatus.STATUS_FALSE == loadWebStatus) {
- return false;
- } else if (LoadingWebStatus.STATUS_TRUE == loadWebStatus) {
- return true;
- } else {
- return super.shouldOverrideUrlLoading(view, url);
- }
- }
-
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- super.onPageStarted(view, url, favicon);
- if (null != webViewClientListen) {
- webViewClientListen.onPageStarted(view, url, favicon);
- }
- }
-
- @Override
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- if (null != webViewClientListen) {
- webViewClientListen.onPageFinished(view, url);
- }
- }
-
- @Override
- public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
- super.onReceivedError(view, errorCode, description, failingUrl);
- if (null != webViewClientListen) {
- webViewClientListen.onReceivedError(view, errorCode, description, failingUrl);
- }
- }
-
- @Override
- public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
- // 当发生证书认证错误时,采用默认的处理方法handler.cancel(),停止加载问题页面
- handler.cancel();
- }
- }
-}
\ No newline at end of file
