From aec6ce7b2c8dc0f6f17d7df7e3d488177e15c5a3 Mon Sep 17 00:00:00 2001 From: sonichy Date: Sun, 3 Mar 2019 22:31:08 +0800 Subject: [PATCH] =?UTF-8?q?4.0=E7=89=88=EF=BC=9A=E5=8F=82=E8=80=83?= =?UTF-8?q?=E5=88=AB=E4=BA=BA=E7=9A=84=E4=BB=A3=E7=A0=81=E7=BB=88=E4=BA=8E?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=A4=9A=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +- app.apk | Bin 419266 -> 355178 bytes main/AndroidManifest.xml | 5 +- main/assets/about.htm | 6 +- .../com/hty/browser/FavoriteActivity.java | 148 +---- main/java/com/hty/browser/MainActivity.java | 621 ++++++++++-------- main/res/layout/activity_main.xml | 38 +- preview.png | Bin 551695 -> 548863 bytes version | 2 +- 9 files changed, 399 insertions(+), 427 deletions(-) diff --git a/README.md b/README.md index 1383d21..ac22c8c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Android:海天鹰浏览器 -基于 Android WebView 组件的浏览器,支持收藏夹、图片广告过滤、视频独立播放。 -### 主界面 +# Android:海天鹰浏览器 +基于 Android WebView 的多窗口浏览器,支持收藏夹、图片广告过滤、视频独立播放。 +### 主界面 ![alt](preview.png) \ No newline at end of file diff --git a/app.apk b/app.apk index f2fe5dbc5edc2fdafc93a82a20c4727426668351..75342e7c7d5a4e6c437d21b16615d18899d794d6 100644 GIT binary patch delta 39241 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 Blq~=N diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml index 18298cf..c7185c9 100644 --- a/main/AndroidManifest.xml +++ b/main/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="4" + android:versionName="4.0"> - diff --git a/main/assets/about.htm b/main/assets/about.htm index e269293..6524c49 100644 --- a/main/assets/about.htm +++ b/main/assets/about.htm @@ -9,18 +9,20 @@ p { text-indent:2em; } -


海天鹰浏览器 V3.12

+


海天鹰浏览器 V4.0

内置扩展的浏览器。

扩展:链接关键字过滤,链接关键字高亮,图片自定义过滤,视频独立播放。

作者:黄颖

源码:https://github.com/sonichy/Android_HTYBrowser

E-mail:sonichy@163.com

参考:

+

多窗口管理

Android WebView 三种文件下载方式

自动安装apk包

获取网页图标

更新日志:

-

V3.12 (2019-02-25)

  1. 支持跨域。
  2. 获取网页图标。
  3. 屏蔽百度首页视频百度好看跳转下载。
  4. Android API 19 以上开启调试,运行 adb devices 连接手机,Chrome 浏览器 chrome://inspect 查看。
+

V4.0 (2019-02-13)

  1. 实现多窗口。
+

V3.12 (2019-02-27)

  1. 支持跨域。
  2. 获取网页图标。
  3. 屏蔽百度首页视频百度好看跳转下载。
  4. Android API 19 以上开启调试,运行 adb devices 连接手机,Chrome 浏览器 chrome://inspect 查看。
  5. 增加标题按钮,点击标题按钮显示地址栏,点击网页隐藏地址栏。

V3.11 (2019-02-13)

  1. 链接中的关键字屏蔽、高亮可设置。

V3.10 (2019-02-10)

  1. 增加:收藏前修改,收藏后修改,修改校验。

V3.9 (2018-12-20)

  1. 视频独立播放JS读不到iframe里的video,使用跳转iframe代替。
diff --git a/main/java/com/hty/browser/FavoriteActivity.java b/main/java/com/hty/browser/FavoriteActivity.java index f76f164..2445c4c 100644 --- a/main/java/com/hty/browser/FavoriteActivity.java +++ b/main/java/com/hty/browser/FavoriteActivity.java @@ -10,14 +10,9 @@ import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.text.Editable; import android.text.TextWatcher; -import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; @@ -25,7 +20,6 @@ import android.view.View; import android.view.View.OnCreateContextMenuListener; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; -import android.webkit.WebIconDatabase; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; @@ -38,12 +32,7 @@ import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.Toast; -import java.io.IOException; -import java.io.InputStream; import java.lang.reflect.Field; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; public class FavoriteActivity extends Activity { SimpleCursorAdapter adapter; @@ -51,7 +40,6 @@ public class FavoriteActivity extends Activity { EditText editText; InputMethodManager IMM; ImageButton imageButton_clear; - WebIconDatabase WID; @Override protected void onCreate(Bundle savedInstanceState) { @@ -66,8 +54,6 @@ public class FavoriteActivity extends Activity { imageButton_clear.setVisibility(View.GONE); search(editText.getText().toString()); IMM = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); - WID = WebIconDatabase.getInstance(); - WID.open(getDir("icons", MODE_PRIVATE).getPath()); } class ButtonListener implements View.OnClickListener { @@ -190,40 +176,24 @@ public class FavoriteActivity extends Activity { void search(String s) { DBHelper helper = new DBHelper(this); - Cursor c = helper.query(s); + Cursor cursor1 = helper.query(s); String[] from = { "_id", "title", "website", "website" }; int[] to = { R.id.id, R.id.title, R.id.website, R.id.imageView_favicon }; - adapter = new SimpleCursorAdapter(this, R.layout.favorite_row, c, from, to, 0); + adapter = new SimpleCursorAdapter(this, R.layout.favorite_row, cursor1, from, to, 0); adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){ public boolean setViewValue(View view, Cursor cursor, int columnIndex){ //Log.e("L192", view.toString() + columnIndex); - if(view.getId() == R.id.imageView_favicon){ + if (view.getId() == R.id.imageView_favicon) { String website = cursor.getString(columnIndex); - // if (website.startsWith("https://")) { - // //((ImageView) view).setImageResource(android.R.drawable.ic_secure); - // Runner1 r1 = new Runner1(); - // r1.setUrl("https://static.easyicon.net/preview/52/523893.gif"); - // r1.setView(view); - // Thread thread1 = new Thread(r1); - // thread1.start(); - // return true; - // } else if (website.startsWith("http://")) { - // // ((ImageView) view).setImageResource(android.R.drawable.ic_partial_secure); - // Runner1 r1 = new Runner1(); - // r1.setUrl("https://static.easyicon.net/preview/1/11847.gif"); - // r1.setView(view); - // Thread thread1 = new Thread(r1); - // thread1.start(); - // return true; - // } else { - // ((ImageView) view).setImageResource(R.drawable.network); - // return true; - // } - Runner1 r1 = new Runner1(); - r1.setUrl(website); - r1.setView(view); - Thread thread1 = new Thread(r1); - thread1.start(); + if (website.startsWith("https://")) { + ((ImageView) view).setImageResource(android.R.drawable.ic_secure); + } else if (website.startsWith("http://")) { + ((ImageView) view).setImageResource(android.R.drawable.ic_partial_secure); + } else if (website.startsWith("file://")) { + ((ImageView) view).setImageResource(android.R.drawable.stat_notify_sdcard); + } else { + ((ImageView) view).setImageResource(R.drawable.network); + } return true; } return false; @@ -231,32 +201,6 @@ public class FavoriteActivity extends Activity { }); listView.setAdapter(adapter); - // WebIconDatabase WID = WebIconDatabase.getInstance(); - // WID.open(getDir("icons", MODE_PRIVATE).getPath()); - // for (int i=0; i arg0, View arg1, int arg2, long arg3) { @@ -306,72 +250,4 @@ public class FavoriteActivity extends Activity { } } - public Bitmap webBitMap(String surl) { - URL url = null; - Bitmap bitmap = null; - try { - url = new URL(surl); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - try { - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setDoInput(true); - conn.connect(); - InputStream IS = conn.getInputStream(); - bitmap = BitmapFactory.decodeStream(IS); - IS.close(); - } catch (IOException e) { - e.printStackTrace(); - } - return bitmap; - } - - class Runner1 implements Runnable { - private String surl; - private View view; - - private void setUrl(String surl1) { - surl = surl1; - } - - private void setView(View view1) { - view = view1; - } - - public void run() { - // Bitmap bitmap = webBitMap(surl); - // Message msg = new Message(); - // Bundle bundle = new Bundle(); - // bundle.putParcelable("bitmap", bitmap); - // msg.setData(bundle); - // msg.obj = view; - // handler.sendMessage(msg); - Log.e("L350", surl); - WID.requestIconForPageUrl(surl, new WebIconDatabase.IconListener() { - public void onReceivedIcon(String url, Bitmap icon) { - Log.e("L353", url); - Message msg = new Message(); - Bundle bundle = new Bundle(); - bundle.putParcelable("bitmap", icon); - msg.setData(bundle); - msg.obj = view; - handler.sendMessage(msg); - } - }); - } - } - - static Handler handler = new Handler(){ - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - Bundle bundle = msg.getData(); - Bitmap bitmap = bundle.getParcelable("bitmap"); - View view = (View) msg.obj; - Log.e("L372", "setIcon"); - ((ImageView) view).setImageBitmap(bitmap); - } - }; - } \ No newline at end of file diff --git a/main/java/com/hty/browser/MainActivity.java b/main/java/com/hty/browser/MainActivity.java index 6225927..30e297b 100644 --- a/main/java/com/hty/browser/MainActivity.java +++ b/main/java/com/hty/browser/MainActivity.java @@ -34,6 +34,7 @@ import android.content.pm.PackageManager; import android.content.res.Configuration; import android.database.Cursor; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.media.MediaScannerConnection; @@ -76,23 +77,25 @@ import android.webkit.WebView.FindListener; import android.webkit.WebView.HitTestResult; import android.webkit.WebViewClient; import android.widget.ArrayAdapter; +import android.widget.Button; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; +import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { + Button button_title, button_page; TextView findCount; EditText editText1, findText; ImageButton btnGo, btnBack, btnForward, btnMenu, findPrev, findNext, findClose, imageButton_info; - WebView webView1; // RelativeLayout RelativeLayout1; LinearLayout LinearLayout1, LinearLayout2; - FrameLayout video, findbar; + FrameLayout webViewLayout, video, findbar; ImageView imageView1; InputMethodManager IMM; ProgressBar pgb1; @@ -105,6 +108,8 @@ public class MainActivity extends Activity { SharedPreferences sharedPreferences; Thread CU; long downloadIdUpdate; + List list_webView = new ArrayList<>(); + int currentPage; @Override protected void onCreate(Bundle savedInstanceState) { @@ -117,14 +122,12 @@ public class MainActivity extends Activity { dir.mkdirs(); } setContentView(R.layout.activity_main); - //ptitle = "百度"; - //urln = "http//www.baidu.com"; getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); LinearLayout1 = (LinearLayout) findViewById(R.id.LinearLayout1); LinearLayout2 = (LinearLayout) findViewById(R.id.LinearLayout2); - // RelativeLayout1 = (RelativeLayout) - // findViewById(R.id.RelativeLayout1); + // RelativeLayout1 = (RelativeLayout) findViewById(R.id.RelativeLayout1); + webViewLayout = (FrameLayout) findViewById(R.id.webViewLayout); video = (FrameLayout) findViewById(R.id.video); findbar = (FrameLayout) findViewById(R.id.findbar); pgb1 = (ProgressBar) findViewById(R.id.progressBar1); @@ -155,7 +158,10 @@ public class MainActivity extends Activity { findNext = (ImageButton) findViewById(R.id.findNext); findClose = (ImageButton) findViewById(R.id.findClose); imageButton_info = (ImageButton) findViewById(R.id.imageButton_info); - // imageView1.setAlpha(100); + button_title = (Button) findViewById(R.id.button_title); + button_page = (Button) findViewById(R.id.button_page); + button_title.setOnClickListener(new ButtonListener()); + button_page.setOnClickListener(new ButtonListener()); btnGo.setOnClickListener(new ButtonListener()); btnBack.setOnClickListener(new ButtonListener()); btnForward.setOnClickListener(new ButtonListener()); @@ -165,218 +171,9 @@ public class MainActivity extends Activity { findNext.setOnClickListener(new ButtonListener()); findClose.setOnClickListener(new ButtonListener()); editText1 = (EditText) findViewById(R.id.EditText1); - webView1 = (WebView) findViewById(R.id.WebView1); + editText1.setVisibility(View.GONE); WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath()); //获取图标数据库路径 - registerForContextMenu(webView1); - // 开启JS - webView1.getSettings().setJavaScriptEnabled(true); - // 开启JS能打开窗口 - webView1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); - // 开启缓存 - webView1.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); - // 自适应屏幕 - webView1.getSettings().setUseWideViewPort(true); - webView1.getSettings().setLoadWithOverviewMode(true); - // 支持缩放 - webView1.getSettings().setSupportZoom(true); - // 启用内置缩放控件 - webView1.getSettings().setBuiltInZoomControls(true); - // 隐藏缩放控件 - webView1.getSettings().setDisplayZoomControls(false); - // 开启访问文件 - webView1.getSettings().setAllowFileAccess(true); - // 开启数据库 - webView1.getSettings().setDatabaseEnabled(true); - // 开启localStorage - webView1.getSettings().setDomStorageEnabled(true); - // 开启定位 - webView1.getSettings().setGeolocationEnabled(true); - // 支持多窗口 - webView1.getSettings().supportMultipleWindows(); - // 支持获取手势焦点 - webView1.requestFocusFromTouch(); - // 允许跨域 - webView1.getSettings().setAllowUniversalAccessFromFileURLs(true); - // 允许调试 - if(Build.VERSION.SDK_INT >= 19) { - webView1.setWebContentsDebuggingEnabled(true); - } - - webView1.setWebViewClient(new WebViewClient() { - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { - Log.e("OverrideUrlLoading", url); - // 协议过滤 - if(url.startsWith("http") && !url.startsWith("https://cdn-haokanapk.baidu.com/")){ - view.loadUrl(url); - } - /* - else if(url.startsWith("tbopen://")){ - Intent intent = new Intent(); - intent.setAction("android.intent.action.VIEW"); - Uri uri = Uri.parse(url); - intent.setData(uri); - intent.setClassName("com.taobao.taobao", "com.taobao.tao.detail.activity.DetailActivity"); - startActivity(intent); - } - */ - return true; - } - - @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { - //super.onPageStarted(view, url, favicon); - editText1.setText(url); - urln = url; - btnBack.setEnabled(true); - IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0); - pgb1.setVisibility(View.VISIBLE); - imageButton_info.setImageResource(android.R.drawable.ic_menu_info_details); -// if(favicon != null) { -// imageButton_info.setImageBitmap(favicon); -// } - } - - @Override - public void onPageFinished(WebView view, String url) { - super.onPageFinished(view, url); - pgb1.setVisibility(View.INVISIBLE); - } - - @Override - public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { - super.onReceivedError(view, errorCode, description, failingUrl); - Toast.makeText(getApplicationContext(), "ReceivedError:" + errorCode, Toast.LENGTH_SHORT).show(); - if (isNetworkConnected()) { - switch(errorCode){ - case WebViewClient.ERROR_HOST_LOOKUP: // 找不到主机,跳转百度搜索 - Log.e("ErrorHostLookup", failingUrl); - String url = "http://m.baidu.com/s?word=" + urlo; - editText1.setText(url); - webView1.loadUrl(url); - urln = url; - break; - case WebViewClient.ERROR_UNSUPPORTED_SCHEME: - Log.e("ErrorUnsupportedScheme",failingUrl); - } - } else { - webView1.loadDataWithBaseURL( - "", - "

网络未连接

", - "text/html", "utf-8", ""); - } - } - - }); - - webView1.setWebChromeClient(new WebChromeClient() { - - // JS的alert('')提示信息转换成安卓控件提示信息 - @Override - public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { - Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); - result.confirm(); - return true; - } - - // HTML5.input.file转换为安卓文件选择器 - @Override - public boolean onShowFileChooser(WebView webView, ValueCallback uploadMsg, WebChromeClient.FileChooserParams fileChooserParams) { - openFileChooserImplForAndroid5(uploadMsg); - return true; - } - - // 进度条 - @Override - public void onProgressChanged(WebView view, int newProgress) { - super.onProgressChanged(view, newProgress); - pgb1.setProgress(newProgress); - if(sharedPreferences.getBoolean("switch_adBlock",true)){ - ADBlock(); - } - if(sharedPreferences.getBoolean("switch_iframeBlock",false)) { - if (!view.getUrl().contains("baidu.com")){ - iframeBlock(); - } - } - // 链接关键字屏蔽 - if(sharedPreferences.getBoolean("switch_filter",false)){ - String sf = sharedPreferences.getString("filter",""); - if(!sf.equals("")) { - String js = "javascript:var s='"+sf+"';var sl=s.split(';');var a=document.getElementsByTagName('a');for(var i=0;i list_title = new ArrayList<>(); + for (int i = 0 ; i < list_webView.size() ; i++) { + list_title.add(i + 1 + "." + list_webView.get(i).getTitle()); + } + String[] titles = list_title.toArray(new String[list_title.size()]); + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); + builder.setTitle("窗口"); + builder.setIcon(android.R.drawable.ic_menu_slideshow); + builder.setItems(titles, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + if(which != currentPage) { + webViewLayout.removeAllViews(); + WebView webView = list_webView.get(which); + webViewLayout.addView(webView); + button_page.setText(which + 1 + ""); + button_title.setText(webView.getTitle()); + editText1.setText(webView.getUrl()); + imageButton_info.setImageBitmap(webView.getFavicon()); + currentPage = which; + } + } + }); + builder.create().show(); + break; case R.id.ImageButtonGo: loadPage(editText1.getText().toString()); break; case R.id.ImageButtonBack: - if (webView1.canGoBack()) { - webView1.goBack(); + if (list_webView.get(currentPage).canGoBack()) { + list_webView.get(currentPage).goBack(); btnForward.setEnabled(true); } else { btnBack.setEnabled(false); } break; case R.id.ImageButtonForward: - if (webView1.canGoForward()) { - webView1.goForward(); + if (list_webView.get(currentPage).canGoForward()) { + list_webView.get(currentPage).goForward(); btnBack.setEnabled(true); } else { btnForward.setEnabled(false); @@ -539,10 +360,10 @@ public class MainActivity extends Activity { imageView1.setVisibility(View.GONE); break; case R.id.findPrev: - webView1.findNext(false); + list_webView.get(currentPage).findNext(false); break; case R.id.findNext: - webView1.findNext(true); + list_webView.get(currentPage).findNext(true); break; case R.id.findClose: findText.setText(""); @@ -589,7 +410,7 @@ public class MainActivity extends Activity { public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: - webView1.loadUrl(HTRE); + list_webView.get(currentPage).loadUrl(HTRE); break; case 1: ClipboardManager mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); @@ -614,8 +435,8 @@ public class MainActivity extends Activity { break; case 5: String js = "javascript:var imgs=document.getElementsByTagName('img');for(i=0;i " + versionL + " ?"); String[] AVersionS = versionS.split("\\."); String[] AVersionL = versionL.split("\\."); - //Log.e("Version: ", AVersionS[0] + " > " + AVersionL[0] + " ? " + AVersionS[1] + " > " + AVersionL[1] + " ?"); - if ((Integer.parseInt(AVersionS[0]) > Integer.parseInt(AVersionL[0])) || (Integer.parseInt(AVersionS[1]) > Integer.parseInt(AVersionL[1]))) { + Log.e("Version", "(" + AVersionS[0] + " > " + AVersionL[0] + ") && (" + AVersionS[1] + " > " + AVersionL[1] + ")"); + if ((Integer.parseInt(AVersionS[0]) > Integer.parseInt(AVersionL[0])) || (Integer.parseInt(AVersionS[0]) == Integer.parseInt(AVersionL[0]) && Integer.parseInt(AVersionS[1]) > Integer.parseInt(AVersionL[1]))) { Looper.prepare(); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); @@ -1221,4 +1060,240 @@ public class MainActivity extends Activity { } } + void newWindow(){ + WebView webView = new WebView(MainActivity.this); + setWebView(webView); + webView.loadUrl(sharedPreferences.getString("homepage","http://www.baidu.com")); + webViewLayout.removeAllViews(); + webViewLayout.addView(webView); + list_webView.add(webView); + currentPage = list_webView.size() - 1; + button_page.setText(currentPage + 1 + ""); + list_webView.get(currentPage).setFindListener(new FindListener() { + @Override + public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, boolean isDoneCounting) { + findCount.setText(activeMatchOrdinal + "/" + numberOfMatches); + } + }); + } + + void setWebView(final WebView webView){ + // 支持获取手势焦点 + webView.requestFocusFromTouch(); + // 允许调试 + if(Build.VERSION.SDK_INT >= 19) { + webView.setWebContentsDebuggingEnabled(true); + } + WebSettings webSettings = webView.getSettings(); + // 开启JS + webSettings.setJavaScriptEnabled(true); + // 开启JS能打开窗口 + webSettings.setJavaScriptCanOpenWindowsAutomatically(true); + // 开启缓存 + webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); + // 自适应屏幕 + webSettings.setUseWideViewPort(true); + webSettings.setLoadWithOverviewMode(true); + // 支持缩放 + webSettings.setSupportZoom(true); + // 启用内置缩放控件 + webSettings.setBuiltInZoomControls(true); + // 隐藏缩放控件 + webSettings.setDisplayZoomControls(false); + // 开启访问文件 + webSettings.setAllowFileAccess(true); + // 开启数据库 + webSettings.setDatabaseEnabled(true); + // 开启localStorage + webSettings.setDomStorageEnabled(true); + // 开启定位 + webSettings.setGeolocationEnabled(true); + // 支持多窗口 + webSettings.supportMultipleWindows(); + // 允许跨域 + webSettings.setAllowUniversalAccessFromFileURLs(true); + + webView.setWebViewClient(new WebViewClient() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + Log.e("OverrideUrlLoading", url); + // 协议过滤 + if(url.startsWith("http") && !url.startsWith("https://cdn-haokanapk.baidu.com/")){ + view.loadUrl(url); + } + /* + else if(url.startsWith("tbopen://")){ + Intent intent = new Intent(); + intent.setAction("android.intent.action.VIEW"); + Uri uri = Uri.parse(url); + intent.setData(uri); + intent.setClassName("com.taobao.taobao", "com.taobao.tao.detail.activity.DetailActivity"); + startActivity(intent); + } + */ + return true; + } + + @Override + public void onPageStarted(WebView view, String url, Bitmap favicon) { + //super.onPageStarted(view, url, favicon); + button_title.setText(url); + button_title.setVisibility(View.VISIBLE); + editText1.setText(url); + editText1.setVisibility(View.GONE); + urln = url; + btnBack.setEnabled(true); + IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0); + pgb1.setVisibility(View.VISIBLE); + imageButton_info.setImageResource(android.R.drawable.ic_menu_info_details); + // if(favicon != null) { + // imageButton_info.setImageBitmap(favicon); + // } + } + + @Override + public void onPageFinished(WebView view, String url) { + super.onPageFinished(view, url); + pgb1.setVisibility(View.INVISIBLE); + } + + @Override + public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { + super.onReceivedError(view, errorCode, description, failingUrl); + Toast.makeText(getApplicationContext(), "ReceivedError:" + errorCode, Toast.LENGTH_SHORT).show(); + if (isNetworkConnected()) { + switch(errorCode){ + case WebViewClient.ERROR_HOST_LOOKUP: // 找不到主机,跳转百度搜索 + Log.e("ErrorHostLookup", failingUrl); + String url = "http://m.baidu.com/s?word=" + urlo; + editText1.setText(url); + webView.loadUrl(url); + urln = url; + break; + case WebViewClient.ERROR_UNSUPPORTED_SCHEME: + Log.e("ErrorUnsupportedScheme",failingUrl); + } + } else { + webView.loadDataWithBaseURL( + "", + "

网络未连接

", + "text/html", "utf-8", ""); + } + } + + }); + + webView.setWebChromeClient(new WebChromeClient() { + + // JS的alert('')提示信息转换成安卓控件提示信息 + @Override + public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { + Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); + result.confirm(); + return true; + } + + // HTML5.input.file转换为安卓文件选择器 + @Override + public boolean onShowFileChooser(WebView webView, ValueCallback uploadMsg, WebChromeClient.FileChooserParams fileChooserParams) { + openFileChooserImplForAndroid5(uploadMsg); + return true; + } + + // 进度条 + @Override + public void onProgressChanged(WebView view, int newProgress) { + super.onProgressChanged(view, newProgress); + pgb1.setProgress(newProgress); + if(sharedPreferences.getBoolean("switch_adBlock",true)){ + ADBlock(); + } + if(sharedPreferences.getBoolean("switch_iframeBlock",false)) { + if (!view.getUrl().contains("baidu.com")){ + iframeBlock(); + } + } + // 链接关键字屏蔽 + if(sharedPreferences.getBoolean("switch_filter",false)){ + String sf = sharedPreferences.getString("filter",""); + if(!sf.equals("")) { + String js = "javascript:var s='"+sf+"';var sl=s.split(';');var a=document.getElementsByTagName('a');for(var i=0;i +