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 f2fe5db..75342e7 100644 Binary files a/app.apk and b/app.apk differ 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 +