diff --git a/app.apk b/app.apk index a06e881..0f61a91 100644 Binary files a/app.apk and b/app.apk differ diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml index 88a41f2..9d89d08 100644 --- a/main/AndroidManifest.xml +++ b/main/AndroidManifest.xml @@ -2,7 +2,7 @@ + android:versionName="4.11"> -


海天鹰浏览器 V4.10

+


海天鹰浏览器 V4.11

内置扩展的浏览器。

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

作者:海天鹰

@@ -23,6 +23,7 @@ p { text-indent:2em; }

获取网页图标

字符串转Bitmap

更新日志:

+

V4.11 (2020-03-03)

  1. 收藏夹增加数目统计。
  2. 收藏夹增加菜单,导出HTML、CSV。

V4.10 (2019-12-17)

  1. 优化视频独立播放。

V4.9 (2019-11-06)

  1. 收藏夹网址增加分享功能。

V4.8 (2019-10-25)

  1. 协议过滤:去除淘宝跳转,增加ftp。
  2. 修复:退出前未反注册广播。
diff --git a/main/java/com/hty/browser/FavoriteActivity.java b/main/java/com/hty/browser/FavoriteActivity.java index cc14f8a..2218d3a 100644 --- a/main/java/com/hty/browser/FavoriteActivity.java +++ b/main/java/com/hty/browser/FavoriteActivity.java @@ -24,6 +24,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; +import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; @@ -33,6 +34,9 @@ import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.Toast; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; import java.lang.reflect.Field; public class FavoriteActivity extends Activity { @@ -42,6 +46,8 @@ public class FavoriteActivity extends Activity { InputMethodManager IMM; ImageButton imageButton_clear; int position = 0; + TextView textView_title; + Button button_favback; @Override protected void onCreate(Bundle savedInstanceState) { @@ -49,6 +55,9 @@ public class FavoriteActivity extends Activity { setContentView(R.layout.activity_favorite); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); IMM = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); + button_favback = (Button) findViewById(R.id.button_favback); + button_favback.setText("<"); + textView_title = (TextView) findViewById(R.id.textView_title); imageButton_clear = (ImageButton) findViewById(R.id.imageButton_clear); imageButton_clear.setOnClickListener(new ButtonListener()); imageButton_clear.setVisibility(View.GONE); @@ -210,6 +219,8 @@ public class FavoriteActivity extends Activity { void search(String s) { DBHelper helper = new DBHelper(this); Cursor cursor1 = helper.query(s); + int count = cursor1.getCount(); + textView_title.setText("收藏夹" + count); 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, cursor1, from, to, 0); @@ -257,4 +268,53 @@ public class FavoriteActivity extends Activity { } } + public void menuFav(View v) { + String[] items = { "导出HTML", "导出CSV" }; + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("收藏夹"); + builder.setIcon(android.R.drawable.btn_star_big_on); + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + switch (which) { + case 0: + String s = "\n\n\n收藏夹\n\n\n\n

收藏夹" + adapter.getCount() + "

\n\n\n"; + for (int i=0; i\n"; + } + s += "
标题网址
" + textView_title.getText().toString() + "" + textView_website.getText().toString() + "
\n\n"; + writeFile("webfav.htm", s); + break; + case 1: + s = ""; + for (int i=0; i 18) { // getWindow().addFlags( @@ -159,39 +159,40 @@ public class MainActivity extends Activity { // // lp.topMargin = 45; // // RelativeLayout1.setLayoutParams(lp); // } - imageButton_go = (ImageButton) findViewById(R.id.imageButton_go); - imageButton_back = (ImageButton) findViewById(R.id.imageButton_back); - imageButton_forward = (ImageButton) findViewById(R.id.imageButton_forward); - imageButton_menu = (ImageButton) findViewById(R.id.imageButton_menu); - imageView1 = (ImageView) findViewById(R.id.imageView1); + button_go = (ImageButton) findViewById(R.id.button_go); + button_back = (ImageButton) findViewById(R.id.button_back); + button_forward = (ImageButton) findViewById(R.id.button_forward); + button_menu = (ImageButton) findViewById(R.id.button_menu); + button_play = (ImageButton) findViewById(R.id.button_play); + button_play.setVisibility(View.GONE); editText_search = (EditText) findViewById(R.id.editText_search); - textView_searchCount = (TextView) findViewById(R.id.textView_searchCount); - imageButton_searchPrev = (ImageButton) findViewById(R.id.imageButton_searchPrev); - imageButton_searchNext = (ImageButton) findViewById(R.id.imageButton_searchNext); - imageButton_searchClose = (ImageButton) findViewById(R.id.imageButton_searchClose); - imageButton_info = (ImageButton) findViewById(R.id.imageButton_info); + textView_searchCount = (TextView) findViewById(R.id.textView_search_count); + button_search_prev = (ImageButton) findViewById(R.id.button_search_prev); + button_search_next = (ImageButton) findViewById(R.id.button_search_next); + button_search_close = (ImageButton) findViewById(R.id.button_search_close); + button_info = (ImageButton) findViewById(R.id.imageButton_info); 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()); - imageButton_go.setOnClickListener(new ButtonListener()); - imageButton_back.setOnClickListener(new ButtonListener()); - imageButton_forward.setOnClickListener(new ButtonListener()); - imageButton_menu.setOnClickListener(new ButtonListener()); - imageView1.setOnClickListener(new ButtonListener()); - imageButton_searchPrev.setOnClickListener(new ButtonListener()); - imageButton_searchNext.setOnClickListener(new ButtonListener()); - imageButton_searchClose.setOnClickListener(new ButtonListener()); - editText1 = (EditText) findViewById(R.id.EditText1); - editText1.setVisibility(View.GONE); + button_go.setOnClickListener(new ButtonListener()); + button_back.setOnClickListener(new ButtonListener()); + button_forward.setOnClickListener(new ButtonListener()); + button_menu.setOnClickListener(new ButtonListener()); + button_play.setOnClickListener(new ButtonListener()); + button_search_prev.setOnClickListener(new ButtonListener()); + button_search_next.setOnClickListener(new ButtonListener()); + button_search_close.setOnClickListener(new ButtonListener()); + editText_url = (EditText) findViewById(R.id.editText_url); + editText_url.setVisibility(View.GONE); WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath()); //获取图标数据库路径 getDataFromIntent(getIntent()); - editText1.setOnEditorActionListener(new TextView.OnEditorActionListener() { + editText_url.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_GO) { - loadPage(editText1.getText().toString()); + loadPage(editText_url.getText().toString()); return true; } return false; @@ -306,7 +307,7 @@ public class MainActivity extends Activity { switch (v.getId()) { case R.id.button_title: button_title.setVisibility(View.GONE); - editText1.setVisibility(View.VISIBLE); + editText_url.setVisibility(View.VISIBLE); break; case R.id.button_page: List list_title = new ArrayList<>(); @@ -327,48 +328,48 @@ public class MainActivity extends Activity { webViewLayout.addView(webView); button_page.setText(which + 1 + ""); button_title.setText(webView.getTitle()); - editText1.setText(webView.getUrl()); - imageButton_info.setImageBitmap(webView.getFavicon()); + editText_url.setText(webView.getUrl()); + button_info.setImageBitmap(webView.getFavicon()); currentPage = which; } } }); builder.create().show(); break; - case R.id.imageButton_go: + case R.id.button_go: //loadPage(editText1.getText().toString()); - list_webView.get(currentPage).loadUrl(editText1.getText().toString()); + list_webView.get(currentPage).loadUrl(editText_url.getText().toString()); break; - case R.id.imageButton_back: + case R.id.button_back: if (list_webView.get(currentPage).canGoBack()) { list_webView.get(currentPage).goBack(); - imageButton_forward.setEnabled(true); + button_forward.setEnabled(true); } else { - imageButton_back.setEnabled(false); + button_back.setEnabled(false); } break; - case R.id.imageButton_forward: + case R.id.button_forward: if (list_webView.get(currentPage).canGoForward()) { list_webView.get(currentPage).goForward(); - imageButton_back.setEnabled(true); + button_back.setEnabled(true); } else { - imageButton_forward.setEnabled(false); + button_forward.setEnabled(false); } break; - case R.id.imageButton_menu: + case R.id.button_menu: MenuDialog(); break; - case R.id.imageView1: + case R.id.button_play: playVideo(); - imageView1.setVisibility(View.GONE); + button_play.setVisibility(View.GONE); break; - case R.id.imageButton_searchPrev: + case R.id.button_search_prev: list_webView.get(currentPage).findNext(false); break; - case R.id.imageButton_searchNext: + case R.id.button_search_next: list_webView.get(currentPage).findNext(true); break; - case R.id.imageButton_searchClose: + case R.id.button_search_close: editText_search.setText(""); IMM.hideSoftInputFromWindow(editText_search.getWindowToken(), 0); searchBar.setVisibility(View.GONE); @@ -450,7 +451,7 @@ public class MainActivity extends Activity { Log.e(Thread.currentThread().getStackTrace()[2] + "", keyCode + ", " + event); if (keyCode == KeyEvent.KEYCODE_BACK) { if (isFullScreen) { - imageView1.setVisibility(View.GONE); + button_play.setVisibility(View.GONE); quitFullScreen(); } else { if (list_webView.get(currentPage).canGoBack()) { @@ -487,7 +488,7 @@ public class MainActivity extends Activity { } // editText1.setText(url); Log.e(Thread.currentThread().getStackTrace()[2] + "", url); - IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0); + IMM.hideSoftInputFromWindow(editText_url.getWindowToken(), 0); editText_search.setText(""); list_webView.get(currentPage).loadUrl(url); // btnBack.setEnabled(true); @@ -614,7 +615,7 @@ public class MainActivity extends Activity { //Log.e(Thread.currentThread().getStackTrace()[2] + "", "onPause"); pauseVideo(); if (isFullScreen) { - imageView1.setVisibility(View.VISIBLE); + button_play.setVisibility(View.VISIBLE); } super.onPause(); } @@ -634,11 +635,11 @@ public class MainActivity extends Activity { list_webView.get(currentPage).loadUrl(js); } - void MenuDialog() { + private void MenuDialog() { String[] items = { "新建窗口", "关闭当前窗口", "收藏当前页", "收藏夹", "查找", "分享", "视频独立播放", "视频截图", "视频在播放器中打开", "查看源码", "主页", "全屏", "广告过滤规则", "设置", "检查更新", "关于", "退出", "清除缓存" }; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("菜单"); - builder.setIcon(R.drawable.ic_launcher); + builder.setIcon(android.R.drawable.ic_menu_preferences); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -659,8 +660,8 @@ public class MainActivity extends Activity { WebView webView = list_webView.get(currentPage); webViewLayout.addView(webView); button_title.setText(webView.getTitle()); - editText1.setText(webView.getUrl()); - imageButton_info.setImageBitmap(webView.getFavicon()); + editText_url.setText(webView.getUrl()); + button_info.setImageBitmap(webView.getFavicon()); } break; case 2: @@ -937,8 +938,8 @@ public class MainActivity extends Activity { } } String content=""; - for(int i=0;i - - - - + + + +