diff --git a/app-debug.apk b/app-debug.apk deleted file mode 100644 index 7aad64d..0000000 Binary files a/app-debug.apk and /dev/null differ diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml index 8ae4ac9..6244797 100644 --- a/main/AndroidManifest.xml +++ b/main/AndroidManifest.xml @@ -2,7 +2,7 @@ + android:versionName="3.10"> - diff --git a/main/assets/about.htm b/main/assets/about.htm index b798b7c..3563279 100644 --- a/main/assets/about.htm +++ b/main/assets/about.htm @@ -9,7 +9,7 @@ p { text-indent:2em; } -


海天鹰浏览器 V3.8

+


海天鹰浏览器 V3.10

内置扩展的浏览器。

扩展:[国产]高亮,广告图片自定义过滤。

作者:黄颖

@@ -20,6 +20,8 @@ p { text-indent:2em; }

Android WebView 三种文件下载方式

自动安装apk包

更新日志:

+

V3.10 (2019-02-10)

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

V3.9 (2018-12-20)

  1. 视频独立播放JS读不到iframe里的video,使用跳转iframe代替。

V3.8 (2018-07-14)

  1. 增加定位权限。

V3.7 (2018-06-13)

  1. 增加自动更新。

V3.6 (2018-05-30)

  1. 修复从收藏夹返回输入法不能自动隐藏的问题。
diff --git a/main/java/com/hty/browser/DBHelper.java b/main/java/com/hty/browser/DBHelper.java index bc0a50d..518bed7 100644 --- a/main/java/com/hty/browser/DBHelper.java +++ b/main/java/com/hty/browser/DBHelper.java @@ -12,7 +12,7 @@ public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = MainActivity.dir + File.separator + "webfav.db"; private final static int VERSION = 1; - String TableName = "webfav"; + static String TableName = "webfav"; private SQLiteDatabase db; private static DBHelper mInstance = null; @@ -39,10 +39,6 @@ public class DBHelper extends SQLiteOpenHelper { // onCreate(db); switch (newVersion) { case 6: - db.execSQL("alter table battery rename to battery_temp"); - db.execSQL("CREATE TABLE battery (_id INTEGER PRIMARY KEY ,time TEXT,level INTEGER, voltage INTEGER, current INTEGER , temperature INTEGER, cpu INTEGER)"); - db.execSQL("insert into battery select *,'' from battery_temp"); - db.execSQL("drop table battery_temp"); break; } } @@ -77,4 +73,4 @@ public class DBHelper extends SQLiteOpenHelper { if (db != null) db.close(); } -} +} \ No newline at end of file diff --git a/main/java/com/hty/browser/FavoriteActivity.java b/main/java/com/hty/browser/FavoriteActivity.java index 1516a43..6d3a0e3 100644 --- a/main/java/com/hty/browser/FavoriteActivity.java +++ b/main/java/com/hty/browser/FavoriteActivity.java @@ -1,11 +1,15 @@ package com.hty.browser; import android.app.Activity; +import android.app.AlertDialog; import android.content.ClipData; import android.content.ClipboardManager; +import android.content.ContentValues; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; @@ -23,11 +27,14 @@ import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.EditText; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.Toast; +import java.lang.reflect.Field; + public class FavoriteActivity extends Activity { SimpleCursorAdapter adapter; ListView listView; @@ -66,6 +73,92 @@ public class FavoriteActivity extends Activity { adapter = new SimpleCursorAdapter(this, R.layout.favorite_row, c, from, to, 0); listView.setAdapter(adapter); break; + case 2: + final String sid = ((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString(); + final String stitle = ((TextView) menuInfo.targetView.findViewById(R.id.title)).getText().toString(); + final String surl = ((TextView) menuInfo.targetView.findViewById(R.id.website)).getText().toString(); + LinearLayout layout = new LinearLayout(FavoriteActivity.this); + layout.setOrientation(LinearLayout.VERTICAL); + final EditText ET_title = new EditText(FavoriteActivity.this); + ET_title.setHint("标题"); + ET_title.setText(stitle); + layout.addView(ET_title); + final EditText ET_url = new EditText(FavoriteActivity.this); + ET_title.setHint("网址"); + ET_url.setText(surl); + layout.addView(ET_url); + AlertDialog.Builder builder = new AlertDialog.Builder(FavoriteActivity.this); + builder.setIcon(android.R.drawable.btn_star_big_on); + builder.setTitle("修改收藏"); + builder.setView(layout); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String stitle = ET_title.getText().toString(); + String surl = ET_url.getText().toString(); + Field field = null; + try { + //通过反射获取dialog中的私有属性mShowing + field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); + field.setAccessible(true);//设置该属性可以访问 + } catch (Exception ex) { + + } + if (!stitle.equals("") && surl.startsWith("http")) { + DBHelper dbHelper = new DBHelper(getApplicationContext()); + SQLiteDatabase db = dbHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("website", surl); + values.put("title", stitle); + db.update(DBHelper.TableName, values, "_id = " + sid, null); + IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); + Cursor c = dbHelper.query(editText.getText().toString()); + String[] from = { "_id", "title", "website" }; + int[] to = { R.id.id, R.id.title, R.id.website }; + adapter = new SimpleCursorAdapter(FavoriteActivity.this, R.layout.favorite_row, c, from, to, 0); + listView.setAdapter(adapter); + try { + //关闭 + field.set(dialog, true); + dialog.dismiss(); + } catch (Exception ex) { + } + } else { + if (stitle.equals("")){ + ET_title.setError("标题不能为空!"); + } + if (!surl.startsWith("http")){ + ET_url.setError("网址错误!"); + } + try { + //设置dialog不可关闭 + field.set(dialog, false); + dialog.dismiss(); + } catch (Exception ex) { + } + } + } + }); + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); + Field field = null; + try { + //通过反射获取dialog中的私有属性mShowing + field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); + field.setAccessible(true);//设置该属性可以访问 + } catch (Exception ex) { + } + try { + field.set(dialog, true); + dialog.dismiss(); + } catch (Exception ex) { + } + } + }); + builder.create().show(); + break; } return true; } @@ -104,6 +197,7 @@ public class FavoriteActivity extends Activity { menu.setHeaderTitle(title); menu.add(0, 0, 0, "复制链接"); menu.add(0, 1, 1, "删除"); + menu.add(0, 2, 2, "修改"); } }); } diff --git a/main/java/com/hty/browser/MainActivity.java b/main/java/com/hty/browser/MainActivity.java index f64ede2..5d2c61f 100644 --- a/main/java/com/hty/browser/MainActivity.java +++ b/main/java/com/hty/browser/MainActivity.java @@ -9,6 +9,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.lang.reflect.Field; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; @@ -33,6 +34,7 @@ import android.content.pm.PackageManager; import android.content.res.Configuration; import android.database.Cursor; import android.graphics.Bitmap; +import android.graphics.Color; import android.media.MediaScannerConnection; import android.net.ConnectivityManager; import android.net.NetworkInfo; @@ -81,145 +83,160 @@ import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { - TextView findCount; - EditText editText1, findText; - ImageButton btnGo, btnBack, btnForward, btnMenu, findPrev, findNext, findClose; - WebView webView1; - // RelativeLayout RelativeLayout1; - LinearLayout LinearLayout1,LinearLayout2; - FrameLayout video, findbar; - ImageView imageView1; - InputMethodManager IMM; - ProgressBar pgb1; - String urlo = "", HTRE = "", ptitle = "", urln = ""; - String urlVersion = "https://raw.githubusercontent.com/sonichy/Android_HTYBrowser/master/version"; - String urlUpdate = "https://raw.githubusercontent.com/sonichy/Android_HTYBrowser/master/app.apk"; - CustomViewCallback customViewCallback; - boolean isFullScreen, isManualCheckUpdate = false; - static File dir; - SharedPreferences sharedPreferences; + TextView findCount; + EditText editText1, findText; + ImageButton btnGo, btnBack, btnForward, btnMenu, findPrev, findNext, findClose; + WebView webView1; + // RelativeLayout RelativeLayout1; + LinearLayout LinearLayout1, LinearLayout2; + FrameLayout video, findbar; + ImageView imageView1; + InputMethodManager IMM; + ProgressBar pgb1; + String urlo = "", HTRE = "", ptitle = "", urln = ""; + String urlVersion = "https://raw.githubusercontent.com/sonichy/Android_HTYBrowser/master/version"; + String urlUpdate = "https://raw.githubusercontent.com/sonichy/Android_HTYBrowser/master/app.apk"; + CustomViewCallback customViewCallback; + boolean isFullScreen, isManualCheckUpdate = false; + static File dir; + SharedPreferences sharedPreferences; Thread CU; long downloadIdUpdate; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); IMM = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); - String path = Environment.getExternalStorageDirectory().getPath() + File.separator + "HTYBrowser"; - dir = new File(path); - if (!dir.exists()) { - dir.mkdirs(); - } - setContentView(R.layout.activity_main); - //ptitle = "百度"; - //urln = "http//www.baidu.com"; - getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); + String path = Environment.getExternalStorageDirectory().getPath() + File.separator + "HTYBrowser"; + dir = new File(path); + if (!dir.exists()) { + 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); - video = (FrameLayout) findViewById(R.id.video); - findbar = (FrameLayout) findViewById(R.id.findbar); - pgb1 = (ProgressBar) findViewById(R.id.progressBar1); - // if (VERSION.SDK_INT > 18) { - // getWindow().addFlags( - // WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); - // getWindow().addFlags( - // WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); - // LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) - // LinearLayout1 - // .getLayoutParams(); - // lp.topMargin = 45; - // LinearLayout1.setLayoutParams(lp); - // // RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) - // // RelativeLayout1 - // // .getLayoutParams(); - // // lp.topMargin = 45; - // // RelativeLayout1.setLayoutParams(lp); - // } - btnGo = (ImageButton) findViewById(R.id.ImageButtonGo); - btnBack = (ImageButton) findViewById(R.id.ImageButtonBack); - btnForward = (ImageButton) findViewById(R.id.ImageButtonForward); - btnMenu = (ImageButton) findViewById(R.id.ImageButtonMenu); - imageView1 = (ImageView) findViewById(R.id.imageView1); - findText = (EditText) findViewById(R.id.findText); - findCount = (TextView) findViewById(R.id.findCount); - findPrev = (ImageButton) findViewById(R.id.findPrev); - findNext = (ImageButton) findViewById(R.id.findNext); - findClose = (ImageButton) findViewById(R.id.findClose); - // imageView1.setAlpha(100); - btnGo.setOnClickListener(new ButtonListener()); - btnBack.setOnClickListener(new ButtonListener()); - btnForward.setOnClickListener(new ButtonListener()); - btnMenu.setOnClickListener(new ButtonListener()); - imageView1.setOnClickListener(new ButtonListener()); - findPrev.setOnClickListener(new ButtonListener()); - findNext.setOnClickListener(new ButtonListener()); - findClose.setOnClickListener(new ButtonListener()); - editText1 = (EditText) findViewById(R.id.EditText1); - webView1 = (WebView) findViewById(R.id.WebView1); - 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(); + LinearLayout1 = (LinearLayout) findViewById(R.id.LinearLayout1); + LinearLayout2 = (LinearLayout) findViewById(R.id.LinearLayout2); + // RelativeLayout1 = (RelativeLayout) + // findViewById(R.id.RelativeLayout1); + video = (FrameLayout) findViewById(R.id.video); + findbar = (FrameLayout) findViewById(R.id.findbar); + pgb1 = (ProgressBar) findViewById(R.id.progressBar1); + // if (VERSION.SDK_INT > 18) { + // getWindow().addFlags( + // WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + // getWindow().addFlags( + // WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); + // LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) + // LinearLayout1 + // .getLayoutParams(); + // lp.topMargin = 45; + // LinearLayout1.setLayoutParams(lp); + // // RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) + // // RelativeLayout1 + // // .getLayoutParams(); + // // lp.topMargin = 45; + // // RelativeLayout1.setLayoutParams(lp); + // } + btnGo = (ImageButton) findViewById(R.id.ImageButtonGo); + btnBack = (ImageButton) findViewById(R.id.ImageButtonBack); + btnForward = (ImageButton) findViewById(R.id.ImageButtonForward); + btnMenu = (ImageButton) findViewById(R.id.ImageButtonMenu); + imageView1 = (ImageView) findViewById(R.id.imageView1); + findText = (EditText) findViewById(R.id.findText); + findCount = (TextView) findViewById(R.id.findCount); + findPrev = (ImageButton) findViewById(R.id.findPrev); + findNext = (ImageButton) findViewById(R.id.findNext); + findClose = (ImageButton) findViewById(R.id.findClose); + // imageView1.setAlpha(100); + btnGo.setOnClickListener(new ButtonListener()); + btnBack.setOnClickListener(new ButtonListener()); + btnForward.setOnClickListener(new ButtonListener()); + btnMenu.setOnClickListener(new ButtonListener()); + imageView1.setOnClickListener(new ButtonListener()); + findPrev.setOnClickListener(new ButtonListener()); + findNext.setOnClickListener(new ButtonListener()); + findClose.setOnClickListener(new ButtonListener()); + editText1 = (EditText) findViewById(R.id.EditText1); + webView1 = (WebView) findViewById(R.id.WebView1); + 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.setWebViewClient(new WebViewClient() { - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { - if(url.startsWith("http")) - view.loadUrl(url); - return true; - } + webView1.setWebViewClient(new WebViewClient() { + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + Log.e("OverrideUrlLoading", url); + // 协议过滤 + if(url.startsWith("http")){ + 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); + @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); + } - @Override - public void onPageFinished(WebView view, String url) { - super.onPageFinished(view, url); - String js = ""; - // 关键字链接高亮 - js = "javascript:var a=document.getElementsByTagName('a');for(var i=0;i

网络未连接

", - "text/html", "utf-8", ""); - } - } + } else { + webView1.loadDataWithBaseURL( + "", + "

网络未连接

", + "text/html", "utf-8", ""); + } + } - }); + }); - webView1.setWebChromeClient(new WebChromeClient() { + 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; - } + // 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; - } + // 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); + // 进度条 + @Override + public void onProgressChanged(WebView view, int newProgress) { + super.onProgressChanged(view, newProgress); + pgb1.setProgress(newProgress); + /* if(!isFullScreen) { if (newProgress == 100) { pgb1.setVisibility(View.INVISIBLE); @@ -294,53 +288,53 @@ public class MainActivity extends Activity { pgb1.setVisibility(View.VISIBLE); } } - if(sharedPreferences.getBoolean("switch_adBlock",true)){ - ADBlock(); - } + */ + if(sharedPreferences.getBoolean("switch_adBlock",true)){ + ADBlock(); + } if(sharedPreferences.getBoolean("switch_iframeBlock",false)) { //Log.e("line292", "progress:" + newProgress); if (!view.getUrl().contains("baidu.com")){ iframeBlock(); } } - } + } - // 获取网页标题 - @Override - public void onReceivedTitle(WebView view, String title) { - super.onReceivedTitle(view, title); - ptitle = title; - } + // 获取网页标题 + @Override + public void onReceivedTitle(WebView view, String title) { + super.onReceivedTitle(view, title); + ptitle = title; + } - // 播放网络视频时全屏会被调用的方法 - @Override - public void onShowCustomView(View view, CustomViewCallback callback) { - Log.e("onShowCustomView", "onShowCustomView"); - //Toast.makeText(getApplicationContext(), "onShowCustomView", Toast.LENGTH_SHORT).show(); - customViewCallback = callback; - // 将video放到当前视图中 - video.addView(view); - // 设置全屏 - setFullScreen(); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } + // 播放网络视频时全屏会被调用的方法 + @Override + public void onShowCustomView(View view, CustomViewCallback callback) { + Log.e("onShowCustomView", "onShowCustomView"); + //Toast.makeText(getApplicationContext(), "onShowCustomView", Toast.LENGTH_SHORT).show(); + customViewCallback = callback; + // 将video放到当前视图中 + video.addView(view); + // 设置全屏 + setFullScreen(); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } - // 视频播放退出全屏会被调用的 - @Override - public void onHideCustomView() { - Log.e("onHideCustomView", "onHideCustomView"); - //Toast.makeText(getApplicationContext(), "onHideCustomView", Toast.LENGTH_SHORT).show(); - getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - // 退出全屏 - // quitFullScreen(); - } + // 视频播放退出全屏会被调用的 + @Override + public void onHideCustomView() { + Log.e("onHideCustomView", "onHideCustomView"); + //Toast.makeText(getApplicationContext(), "onHideCustomView", Toast.LENGTH_SHORT).show(); + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + // 退出全屏 + // quitFullScreen(); + } - @Override - public boolean onConsoleMessage(ConsoleMessage consoleMessage) { - Log.d("onConsoleMessage", consoleMessage.message() + " at " + consoleMessage.sourceId() + ":" - + consoleMessage.lineNumber()); - return super.onConsoleMessage(consoleMessage); - } + @Override + public boolean onConsoleMessage(ConsoleMessage consoleMessage) { + Log.d("onConsoleMessage", consoleMessage.message() + " at " + consoleMessage.sourceId() + ":" + consoleMessage.lineNumber()); + return super.onConsoleMessage(consoleMessage); + } // 定位权限 @Override @@ -349,81 +343,81 @@ public class MainActivity extends Activity { super.onGeolocationPermissionsShowPrompt(origin, callback); } - }); + }); - webView1.setDownloadListener(new MyWebViewDownLoadListener()); + webView1.setDownloadListener(new MyWebViewDownLoadListener()); - webView1.setOnTouchListener(new OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - webView1.requestFocus(); - IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0); - return false; - } - }); + webView1.setOnTouchListener(new OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + webView1.requestFocus(); + IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0); + return false; + } + }); - editText1.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_GO) { - loadPage(editText1.getText().toString()); - return true; - } - return false; - } - }); + editText1.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_GO) { + loadPage(editText1.getText().toString()); + return true; + } + return false; + } + }); - findText.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_SEARCH) { - webView1.findAllAsync(findText.getText().toString()); - IMM.hideSoftInputFromWindow(findText.getWindowToken(), 0); - return true; - } - return false; - } - }); + findText.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + webView1.findAllAsync(findText.getText().toString()); + IMM.hideSoftInputFromWindow(findText.getWindowToken(), 0); + return true; + } + return false; + } + }); - findText.addTextChangedListener(new TextWatcher() { - @Override - public void onTextChanged(CharSequence text, int start, int before, int count) { - // text 输入框中改变后的字符串信息 - // start 输入框中改变后的字符串的起始位置 - // before 输入框中改变前的字符串的位置 默认为0 - // count 输入框中改变后的一共输入字符串的数量 - webView1.findAllAsync(text.toString()); - } + findText.addTextChangedListener(new TextWatcher() { + @Override + public void onTextChanged(CharSequence text, int start, int before, int count) { + // text 输入框中改变后的字符串信息 + // start 输入框中改变后的字符串的起始位置 + // before 输入框中改变前的字符串的位置 默认为0 + // count 输入框中改变后的一共输入字符串的数量 + webView1.findAllAsync(text.toString()); + } - @Override - public void beforeTextChanged(CharSequence text, int start, int count, int after) { - // text 输入框中改变前的字符串信息 - // start 输入框中改变前的字符串的起始位置 - // count 输入框中改变前后的字符串改变数量一般为0 - // after 输入框中改变后的字符串与起始位置的偏移量 - } + @Override + public void beforeTextChanged(CharSequence text, int start, int count, int after) { + // text 输入框中改变前的字符串信息 + // start 输入框中改变前的字符串的起始位置 + // count 输入框中改变前后的字符串改变数量一般为0 + // after 输入框中改变后的字符串与起始位置的偏移量 + } - @Override - public void afterTextChanged(Editable edit) { - // edit 输入结束呈现在输入框中的信息 - } - }); + @Override + public void afterTextChanged(Editable edit) { + // edit 输入结束呈现在输入框中的信息 + } + }); - Intent intent = getIntent(); - if (intent.ACTION_VIEW.equals(intent.getAction())) { - urln = intent.getDataString(); - loadPage(urln); - }else{ + Intent intent = getIntent(); + if (intent.ACTION_VIEW.equals(intent.getAction())) { + urln = intent.getDataString(); + loadPage(urln); + }else{ loadPage(sharedPreferences.getString("homepage","http://www.baidu.com")); } - webView1.setFindListener(new FindListener() { - @Override - public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, - boolean isDoneCounting) { - findCount.setText(activeMatchOrdinal + "/" + numberOfMatches); - } - }); + webView1.setFindListener(new FindListener() { + @Override + public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, + boolean isDoneCounting) { + findCount.setText(activeMatchOrdinal + "/" + numberOfMatches); + } + }); CU = new Thread() { @@ -438,631 +432,695 @@ public class MainActivity extends Activity { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(DownloadManager.ACTION_DOWNLOAD_COMPLETE); registerReceiver(receiver, intentFilter); - } + } - private void setFullScreen() { - // RelativeLayout1.setVisibility(View.GONE); - LinearLayout1.setVisibility(View.GONE); - video.setVisibility(View.VISIBLE); - // imageView1.setVisibility(View.VISIBLE); - // 横屏显示 - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - // 设置全屏的相关属性,获取当前的屏幕状态,然后设置全屏 - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); - // 全屏下的状态码:1098974464 - // 窗口下的状态吗:1098973440 - isFullScreen = true; - } + private void setFullScreen() { + // RelativeLayout1.setVisibility(View.GONE); + LinearLayout1.setVisibility(View.GONE); + video.setVisibility(View.VISIBLE); + // imageView1.setVisibility(View.VISIBLE); + // 横屏显示 + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + // 设置全屏的相关属性,获取当前的屏幕状态,然后设置全屏 + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + // 全屏下的状态码:1098974464 + // 窗口下的状态吗:1098973440 + isFullScreen = true; + } - // 退出全屏 - private void quitFullScreen() { - if (customViewCallback != null) { - // 隐藏掉 - customViewCallback.onCustomViewHidden(); - } - // RelativeLayout1.setVisibility(View.VISIBLE); - LinearLayout1.setVisibility(View.VISIBLE); - LinearLayout2.setVisibility(View.VISIBLE); + // 退出全屏 + private void quitFullScreen() { + if (customViewCallback != null) { + // 隐藏掉 + customViewCallback.onCustomViewHidden(); + } + // RelativeLayout1.setVisibility(View.VISIBLE); + LinearLayout1.setVisibility(View.VISIBLE); + LinearLayout2.setVisibility(View.VISIBLE); pgb1.setVisibility(View.VISIBLE); - video.setVisibility(View.GONE); - // imageView1.setVisibility(View.GONE); - // 用户当前的首选方向 - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); - // 声明当前屏幕状态的参数并获取 - final WindowManager.LayoutParams attrs = getWindow().getAttributes(); - attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN); - getWindow().setAttributes(attrs); - getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); - isFullScreen = false; - } + video.setVisibility(View.GONE); + // imageView1.setVisibility(View.GONE); + // 用户当前的首选方向 + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); + // 声明当前屏幕状态的参数并获取 + final WindowManager.LayoutParams attrs = getWindow().getAttributes(); + attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN); + getWindow().setAttributes(attrs); + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); + isFullScreen = false; + } - public ValueCallback mUploadMessage; - public ValueCallback mUploadMessageForAndroid5; - public final static int FILECHOOSER_RESULTCODE = 1; - public final static int FILECHOOSER_RESULTCODE_FOR_ANDROID_5 = 2; + public ValueCallback mUploadMessage; + public ValueCallback mUploadMessageForAndroid5; + public final static int FILECHOOSER_RESULTCODE = 1; + public final static int FILECHOOSER_RESULTCODE_FOR_ANDROID_5 = 2; - private void openFileChooserImplForAndroid5(ValueCallback uploadMsg) { - mUploadMessageForAndroid5 = uploadMsg; - Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT); - contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE); - contentSelectionIntent.setType("*/*"); - Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); - chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent); - chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser"); - startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE_FOR_ANDROID_5); - } + private void openFileChooserImplForAndroid5(ValueCallback uploadMsg) { + mUploadMessageForAndroid5 = uploadMsg; + Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT); + contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE); + contentSelectionIntent.setType("*/*"); + Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); + chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent); + chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser"); + startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE_FOR_ANDROID_5); + } - class ButtonListener implements OnClickListener { - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.ImageButtonGo: - loadPage(editText1.getText().toString()); - break; - case R.id.ImageButtonBack: - if (webView1.canGoBack()) { - webView1.goBack(); - btnForward.setEnabled(true); - } else { - btnBack.setEnabled(false); - } - break; - case R.id.ImageButtonForward: - if (webView1.canGoForward()) { - webView1.goForward(); - btnBack.setEnabled(true); - } else { - btnForward.setEnabled(false); - } - break; - case R.id.ImageButtonMenu: - // MainActivity.this.openOptionsMenu(); - MenuDialog(); - break; - case R.id.imageView1: - playVideo(); - imageView1.setVisibility(View.GONE); - break; - case R.id.findPrev: - webView1.findNext(false); - break; - case R.id.findNext: - webView1.findNext(true); - break; - case R.id.findClose: - findText.setText(""); - IMM.hideSoftInputFromWindow(findText.getWindowToken(), 0); - findbar.setVisibility(View.GONE); - break; - } - } - } + class ButtonListener implements OnClickListener { + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.ImageButtonGo: + loadPage(editText1.getText().toString()); + break; + case R.id.ImageButtonBack: + if (webView1.canGoBack()) { + webView1.goBack(); + btnForward.setEnabled(true); + } else { + btnBack.setEnabled(false); + } + break; + case R.id.ImageButtonForward: + if (webView1.canGoForward()) { + webView1.goForward(); + btnBack.setEnabled(true); + } else { + btnForward.setEnabled(false); + } + break; + case R.id.ImageButtonMenu: + MenuDialog(); + break; + case R.id.imageView1: + playVideo(); + imageView1.setVisibility(View.GONE); + break; + case R.id.findPrev: + webView1.findNext(false); + break; + case R.id.findNext: + webView1.findNext(true); + break; + case R.id.findClose: + findText.setText(""); + IMM.hideSoftInputFromWindow(findText.getWindowToken(), 0); + findbar.setVisibility(View.GONE); + break; + } + } + } - private class MyWebViewDownLoadListener implements DownloadListener { - @Override - public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, - long contentLength) { -// Uri uri = Uri.parse(url); -// Intent intent = new Intent(Intent.ACTION_VIEW, uri); -// startActivity(intent); - downloadBySystem(url,"",""); - } - } + private class MyWebViewDownLoadListener implements DownloadListener { + @Override + public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { + // Uri uri = Uri.parse(url); + // Intent intent = new Intent(Intent.ACTION_VIEW, uri); + // startActivity(intent); + downloadBySystem(url,"",""); + } + } - @Override - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, v, menuInfo); - WebView w = (WebView) v; - HitTestResult result = w.getHitTestResult(); - HTRE = result.getExtra(); - menu.setHeaderTitle(HTRE); - if (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { - menu.add(0, 0, 0, "查看图片"); - menu.add(0, 1, 1, "复制图片"); - menu.add(0, 2, 2, "保存图片"); - menu.add(0, 3, 3, "复制链接"); + @Override + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + WebView w = (WebView) v; + HitTestResult result = w.getHitTestResult(); + HTRE = result.getExtra(); + menu.setHeaderTitle(HTRE); + if (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { + menu.add(0, 0, 0, "查看图片"); + menu.add(0, 1, 1, "复制图片"); + menu.add(0, 2, 2, "保存图片"); + menu.add(0, 3, 3, "复制链接"); menu.add(0, 4, 4, "屏蔽图片"); - } - if (result.getType() == HitTestResult.SRC_ANCHOR_TYPE) { - menu.add(0, 2, 2, "下载"); - menu.add(0, 3, 3, "复制链接"); - } - } + menu.add(0, 5, 5, "隐藏图片"); + } + if (result.getType() == HitTestResult.SRC_ANCHOR_TYPE) { + menu.add(0, 2, 2, "下载"); + menu.add(0, 3, 3, "复制链接"); + } + } - @Override - public boolean onContextItemSelected(MenuItem item) { - //AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); - switch (item.getItemId()) { - case 0: - webView1.loadUrl(HTRE); - break; - case 1: - ClipboardManager mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); - ContentValues values = new ContentValues(2); - values.put(MediaStore.Images.Media.MIME_TYPE, "Image/jpg"); - values.put(MediaStore.Images.Media.DATA, HTRE); - ContentResolver theContent = getContentResolver(); - Uri imageUri = theContent.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); - ClipData theClip = ClipData.newUri(getContentResolver(), "Image", imageUri); - mClipboard.setPrimaryClip(theClip); - break; - case 2: - //new SaveImage().execute(); - downloadBySystem(HTRE,"",""); - break; - case 3: - ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); - cm.setPrimaryClip(ClipData.newPlainText("link", HTRE)); - Toast.makeText(getApplicationContext(), "链接已复制", Toast.LENGTH_SHORT).show(); - break; - case 4: - DialogBlock(HTRE); - break; -// case 5: -// downloadBySystem(HTRE,"",""); -// break; - default: - return super.onContextItemSelected(item); - } - return true; - } + @Override + public boolean onContextItemSelected(MenuItem item) { + switch (item.getItemId()) { + case 0: + webView1.loadUrl(HTRE); + break; + case 1: + ClipboardManager mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); + ContentValues values = new ContentValues(2); + values.put(MediaStore.Images.Media.MIME_TYPE, "Image/jpg"); + values.put(MediaStore.Images.Media.DATA, HTRE); + ContentResolver theContent = getContentResolver(); + Uri imageUri = theContent.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); + ClipData theClip = ClipData.newUri(getContentResolver(), "Image", imageUri); + mClipboard.setPrimaryClip(theClip); + break; + case 2: + downloadBySystem(HTRE,"",""); + break; + case 3: + ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); + cm.setPrimaryClip(ClipData.newPlainText("link", HTRE)); + Toast.makeText(getApplicationContext(), "链接已复制", Toast.LENGTH_SHORT).show(); + break; + case 4: + DialogBlock(HTRE); + break; + case 5: + String js = "javascript:var imgs=document.getElementsByTagName('img');for(i=0;i { - @Override - protected String doInBackground(String... params) { - String result = ""; - String imgurl = HTRE; - try { - String sdcard = Environment.getExternalStorageDirectory().toString(); - File file = new File(sdcard + "/Download"); - if (!file.exists()) { - file.mkdirs(); - } - int idx = imgurl.lastIndexOf("/"); - String filename = imgurl.substring(idx); - String filepath = sdcard + "/Download/" + filename; - file = new File(filepath); - InputStream inputStream = null; - URL url = new URL(imgurl); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("GET"); - conn.setConnectTimeout(20000); - if (conn.getResponseCode() == 200) { - inputStream = conn.getInputStream(); - } - byte[] buffer = new byte[4096]; - int len = 0; - FileOutputStream outStream = new FileOutputStream(file); - while ((len = inputStream.read(buffer)) != -1) { - outStream.write(buffer, 0, len); - } - outStream.close(); - result = "图片已保存至:" + file.getAbsolutePath(); - MediaScannerConnection.scanFile(MainActivity.this, new String[] { filepath }, null, null); - } catch (Exception e) { - result = "保存失败!" + e.getLocalizedMessage(); - } - return result; - } + private class SaveImage extends AsyncTask { + @Override + protected String doInBackground(String... params) { + String result = ""; + String imgurl = HTRE; + try { + String sdcard = Environment.getExternalStorageDirectory().toString(); + File file = new File(sdcard + "/Download"); + if (!file.exists()) { + file.mkdirs(); + } + int idx = imgurl.lastIndexOf("/"); + String filename = imgurl.substring(idx); + String filepath = sdcard + "/Download/" + filename; + file = new File(filepath); + InputStream inputStream = null; + URL url = new URL(imgurl); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(20000); + if (conn.getResponseCode() == 200) { + inputStream = conn.getInputStream(); + } + byte[] buffer = new byte[4096]; + int len = 0; + FileOutputStream outStream = new FileOutputStream(file); + while ((len = inputStream.read(buffer)) != -1) { + outStream.write(buffer, 0, len); + } + outStream.close(); + result = "图片已保存至:" + file.getAbsolutePath(); + MediaScannerConnection.scanFile(MainActivity.this, new String[] { filepath }, null, null); + } catch (Exception e) { + result = "保存失败!" + e.getLocalizedMessage(); + } + return result; + } - @Override - protected void onPostExecute(String result) { - Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); - } - } + @Override + protected void onPostExecute(String result) { + Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); + } + } - boolean isNetworkConnected() { - ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); - if (mNetworkInfo != null) { - return mNetworkInfo.isAvailable(); - } - return false; - } + boolean isNetworkConnected() { + ConnectivityManager mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); + if (mNetworkInfo != null) { + return mNetworkInfo.isAvailable(); + } + return false; + } - @Override - public void onConfigurationChanged(Configuration newConfig) { - // TODO Auto-generated method stub - super.onConfigurationChanged(newConfig); - // if (this.getResources().getConfiguration().orientation == - // Configuration.ORIENTATION_LANDSCAPE) { - // Toast.makeText(getApplicationContext(), "横屏", Toast.LENGTH_SHORT) - // .show(); - // } else if (this.getResources().getConfiguration().orientation == - // Configuration.ORIENTATION_PORTRAIT) { - // Toast.makeText(getApplicationContext(), "竖屏", Toast.LENGTH_SHORT) - // .show(); - // } - } + @Override + public void onConfigurationChanged(Configuration newConfig) { + // TODO Auto-generated method stub + super.onConfigurationChanged(newConfig); + // if (this.getResources().getConfiguration().orientation == + // Configuration.ORIENTATION_LANDSCAPE) { + // Toast.makeText(getApplicationContext(), "横屏", Toast.LENGTH_SHORT) + // .show(); + // } else if (this.getResources().getConfiguration().orientation == + // Configuration.ORIENTATION_PORTRAIT) { + // Toast.makeText(getApplicationContext(), "竖屏", Toast.LENGTH_SHORT) + // .show(); + // } + } - @Override - protected void onPause() { - Log.e("MainActivity", "onPause"); - pauseVideo(); - if (isFullScreen) { - imageView1.setVisibility(View.VISIBLE); - } - super.onPause(); - } + @Override + protected void onPause() { + Log.e("MainActivity", "onPause"); + pauseVideo(); + if (isFullScreen) { + imageView1.setVisibility(View.VISIBLE); + } + super.onPause(); + } - @Override - protected void onResume() { - super.onResume(); - } + @Override + protected void onResume() { + super.onResume(); + } - void pauseVideo() { - String js = "javascript:var obj = document.getElementsByTagName('video');for (var i = 0; i < obj.length; i++) { obj[i].pause();}"; - webView1.loadUrl(js); - } + void pauseVideo() { + String js = "javascript:var obj = document.getElementsByTagName('video');for (var i = 0; i < obj.length; i++) { obj[i].pause();}"; + webView1.loadUrl(js); + } - void playVideo() { - String js = "javascript:var obj = document.getElementsByTagName('video');for (var i = 0; i < obj.length; i++) { obj[i].play();}"; - webView1.loadUrl(js); - } + void playVideo() { + String js = "javascript:var obj = document.getElementsByTagName('video');for (var i = 0; i < obj.length; i++) { obj[i].play();}"; + webView1.loadUrl(js); + } - void MenuDialog() { - String[] items = { "收藏本页", "收藏夹", "查找", "分享", "视频独立播放", "查看源码", "主页", "全屏", "广告过滤规则", "设置", "检查更新", "关于", "退出" }; - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle("菜单"); - builder.setIcon(R.drawable.ic_launcher); - builder.setItems(items, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - switch (which) { - case 0: - if (!urln.equals("about:blank")) { - DBHelper helper = new DBHelper(getApplicationContext()); - Cursor c = helper.query(urln); - if (c.getCount() == 0) { - ContentValues values = new ContentValues(); - values.put("website", urln); - values.put("title", ptitle); - helper.insert(values); - } else { - Toast.makeText(getApplicationContext(), "网址已存在", Toast.LENGTH_SHORT).show(); - } - } - break; - case 1: - Intent intent = new Intent(MainActivity.this, FavoriteActivity.class); - startActivityForResult(intent, 0); - break; - case 2: - findbar.setVisibility(View.VISIBLE); - findText.requestFocus(); - webView1.findAllAsync(findText.getText().toString()); - break; - case 3: - intent = new Intent(); - intent.setAction(Intent.ACTION_SEND); - intent.putExtra(Intent.EXTRA_TEXT, webView1.getUrl()); - intent.setType("text/plain"); - startActivity(Intent.createChooser(intent, "分享")); - break; - case 4: - String js = "javascript:var video0=document.getElementsByTagName('video')[0]; if(video0!=null){ var url=video0.src; document.body.innerHTML=''; var video=document.createElement('video'); video.style.width='100%'; video.style.height='auto'; video.src=url; video.controls=true; document.body.appendChild(video); var a=document.createElement('a'); a.textContent=url; a.href=url; document.body.appendChild(a); }"; - webView1.loadUrl(js); - break; - case 5: - js = "javascript:var s=''+document.getElementsByTagName('html')[0].innerHTML+''; document.body.innerHTML=''; var pre=document.createElement('pre'); document.body.appendChild(pre); pre.textContent=s;"; - webView1.loadUrl(js); - break; - case 6: - webView1.loadUrl(sharedPreferences.getString("homepage","")); - break; - case 7: - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); - LinearLayout2.setVisibility(View.GONE); - pgb1.setVisibility(View.GONE); - isFullScreen = true; - break; - case 8: - DialogBlockList(); - break; - case 9: - startActivity(new Intent(MainActivity.this, SettingsActivity.class)); - break; - case 10: + void MenuDialog() { + String[] items = { "收藏当前页", "收藏夹", "查找", "分享", "视频独立播放", "查看源码", "主页", "全屏", "广告过滤规则", "设置", "检查更新", "关于", "退出" }; + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("菜单"); + builder.setIcon(R.drawable.ic_launcher); + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + switch (which) { + case 0: + LinearLayout layout = new LinearLayout(MainActivity.this); + layout.setOrientation(LinearLayout.VERTICAL); + final EditText ET_title = new EditText(MainActivity.this); + ET_title.setHint("标题"); + ET_title.setText(ptitle); + layout.addView(ET_title); + final EditText ET_url = new EditText(MainActivity.this); + ET_title.setHint("网址"); + ET_url.setText(urln); + layout.addView(ET_url); + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); + builder.setIcon(android.R.drawable.btn_star); + builder.setTitle("添加收藏"); + builder.setView(layout); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String stitle = ET_title.getText().toString(); + String surl = ET_url.getText().toString(); + Field field = null; + try { + //通过反射获取dialog中的私有属性mShowing + field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); + field.setAccessible(true);//设置该属性可以访问 + } catch (Exception ex) { + + } + if (!stitle.equals("") && surl.startsWith("http")) { + DBHelper helper = new DBHelper(getApplicationContext()); + Cursor c = helper.query(surl); + if (c.getCount() == 0) { + ContentValues values = new ContentValues(); + values.put("website", surl); + values.put("title", stitle); + helper.insert(values); + } else { + Toast.makeText(getApplicationContext(), "网址已存在", Toast.LENGTH_SHORT).show(); + IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); + } + try { + //关闭 + field.set(dialog, true); + dialog.dismiss(); + } catch (Exception ex) { + } + } else { + if (stitle.equals("")){ + ET_title.setError("标题不能为空!"); + } + if (!surl.startsWith("http")){ + ET_url.setError("网址错误!"); + } + try { + //设置dialog不可关闭 + field.set(dialog, false); + dialog.dismiss(); + } catch (Exception ex) { + } + } + } + }); + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); + Field field = null; + try { + //通过反射获取dialog中的私有属性mShowing + field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); + field.setAccessible(true);//设置该属性可以访问 + } catch (Exception ex) { + } + try { + field.set(dialog, true); + dialog.dismiss(); + } catch (Exception ex) { + } + } + }); + builder.create().show(); + break; + case 1: + Intent intent = new Intent(MainActivity.this, FavoriteActivity.class); + startActivityForResult(intent, 0); + break; + case 2: + findbar.setVisibility(View.VISIBLE); + findText.requestFocus(); + webView1.findAllAsync(findText.getText().toString()); + break; + case 3: + intent = new Intent(); + intent.setAction(Intent.ACTION_SEND); + intent.putExtra(Intent.EXTRA_TEXT, webView1.getUrl()); + intent.setType("text/plain"); + startActivity(Intent.createChooser(intent, "分享")); + break; + case 4: + String js = "javascript:var videos=document.getElementsByTagName('video'); if(videos.length!=0){ var url=videos[0].src; document.body.innerHTML=''; var video=document.createElement('video'); video.style.width='100%'; video.style.height='auto'; video.src=url; video.controls=true; document.body.appendChild(video); var a=document.createElement('a'); a.textContent=url; a.href=url; document.body.appendChild(a); } else { var iframes=document.getElementsByTagName('iframe'); if(iframes.length!=0) window.location.href=iframes[0].src; }"; + webView1.loadUrl(js); + break; + case 5: + js = "javascript:var s=''+document.getElementsByTagName('html')[0].innerHTML+''; document.body.innerHTML=''; var pre=document.createElement('pre'); document.body.appendChild(pre); pre.textContent=s;"; + webView1.loadUrl(js); + break; + case 6: + webView1.loadUrl(sharedPreferences.getString("homepage","")); + break; + case 7: + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + LinearLayout2.setVisibility(View.GONE); + pgb1.setVisibility(View.GONE); + isFullScreen = true; + break; + case 8: + DialogBlockList(); + break; + case 9: + startActivity(new Intent(MainActivity.this, SettingsActivity.class)); + break; + case 10: isManualCheckUpdate = true; new Thread(CU).start(); - break; + break; case 11: - webView1.loadUrl("file:///android_asset/about.htm"); - break; - case 12: - MainActivity.this.finish(); - break; - } - } - }); - builder.create().show(); - } + webView1.loadUrl("file:///android_asset/about.htm"); + break; + case 12: + MainActivity.this.finish(); + break; + } + } + }); + builder.create().show(); + } - void DialogBlock(String content){ - final EditText ETrule = new EditText(this); - ETrule.setText(content); - final AlertDialog dialogRule = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher).setTitle("屏蔽规则").setView(ETrule).setCancelable(false).setPositiveButton("添加",null).setNeutralButton("删除",null).setNegativeButton("取消",null).create(); - dialogRule.show(); - dialogRule.getButton(AlertDialog.BUTTON_POSITIVE) - .setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + void DialogBlock(String content){ + final EditText ETrule = new EditText(this); + ETrule.setText(content); + final AlertDialog dialogRule = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher).setTitle("屏蔽规则").setView(ETrule).setCancelable(false).setPositiveButton("添加",null).setNeutralButton("删除",null).setNegativeButton("取消",null).create(); + dialogRule.show(); + dialogRule.getButton(AlertDialog.BUTTON_POSITIVE) + .setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { boolean exist = false; - String rule = ETrule.getText().toString(); - List rulelist = new ArrayList(Arrays.asList(ReadFile("blockrules").split("\n"))); - for(int i=0;i rulelist = new ArrayList(Arrays.asList(ReadFile("blockrules").split("\n"))); + for(int i=0;i rulelist = new ArrayList(Arrays.asList(ReadFile("blockrules").split("\n"))); - for(int i=0;i rulelist = new ArrayList(Arrays.asList(ReadFile("blockrules").split("\n"))); + for(int i=0;i adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1, datas); - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setIcon(R.drawable.ic_launcher); - builder.setTitle("屏蔽规则列表:"); - builder.setAdapter(adapter, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - DialogBlock(datas[which]); - //Toast.makeText(MainActivity.this, "你点击了第" + which + "个item", Toast.LENGTH_SHORT).show(); - } - }); - builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { + void DialogBlockList(){ + //Log.e("readfile: ", ReadFile("blockrules")); + final String[] datas = ReadFile("blockrules").split("\n"); + //Log.e("readfile: ", datas.toString()); + ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1, datas); + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setIcon(R.drawable.ic_launcher); + builder.setTitle("屏蔽规则列表:"); + builder.setAdapter(adapter, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + DialogBlock(datas[which]); + //Toast.makeText(MainActivity.this, "你点击了第" + which + "个item", Toast.LENGTH_SHORT).show(); + } + }); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { - } - }); - builder.setNeutralButton("清空", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); - builder1.setMessage("操作不可逆,确认清空吗?"); - builder1.setIcon(R.drawable.ic_launcher); - builder1.setTitle("警告"); - builder1.setPositiveButton("确认", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - String filepath = getFilesDir().getAbsolutePath() + "/blockrules"; - File file = new File(filepath); - //if(file.isFile() && file.exists()) { - Log.e("delete "+filepath, String.valueOf(file.delete())); - //} - } - }); - builder1.setNegativeButton("取消", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { + } + }); + builder.setNeutralButton("清空", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); + builder1.setMessage("操作不可逆,确认清空吗?"); + builder1.setIcon(R.drawable.ic_launcher); + builder1.setTitle("警告"); + builder1.setPositiveButton("确认", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + String filepath = getFilesDir().getAbsolutePath() + "/blockrules"; + File file = new File(filepath); + //if(file.isFile() && file.exists()) { + Log.e("delete "+filepath, String.valueOf(file.delete())); + //} + } + }); + builder1.setNegativeButton("取消", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { - } - }); - builder1.create().show(); - } - }); - builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { + } + }); + builder1.create().show(); + } + }); + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { - } - }); - builder.show(); - } + } + }); + builder.show(); + } - String ReadFile(String filename) { - String s = ""; - FileInputStream istream; - try { - istream = MainActivity.this.openFileInput(filename); - byte[] buffer = new byte[1024]; - ByteArrayOutputStream ostream = new ByteArrayOutputStream(); - int len; - while ((len = istream.read(buffer)) != -1) { - ostream.write(buffer, 0, len); - } - s = new String(ostream.toByteArray()); - istream.close(); - ostream.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - return s; - } + String ReadFile(String filename) { + String s = ""; + FileInputStream istream; + try { + istream = MainActivity.this.openFileInput(filename); + byte[] buffer = new byte[1024]; + ByteArrayOutputStream ostream = new ByteArrayOutputStream(); + int len; + while ((len = istream.read(buffer)) != -1) { + ostream.write(buffer, 0, len); + } + s = new String(ostream.toByteArray()); + istream.close(); + ostream.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return s; + } - void ADBlock(){ - String s = ReadFile("blockrules"); - if(!s.equals("")) { - String rules = s.replace("\n", ","); - if (rules.endsWith(",")) { - rules = rules.substring(0, rules.length() - 1); - } - String js = "javascript:var rules='" + rules + "';var rule=new Array();rule=rules.split(',');var img=document.getElementsByTagName('img');for(i=0;i - + diff --git a/main/res/layout/activity_favorite.xml b/main/res/layout/activity_favorite.xml index 9152026..c14ecb9 100644 --- a/main/res/layout/activity_favorite.xml +++ b/main/res/layout/activity_favorite.xml @@ -34,9 +34,14 @@ android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginBottom="10dp" + android:layout_marginLeft="10dp" + android:layout_marginRight="10dp" + android:background="@drawable/border_edittext" android:ems="10" android:hint="搜索" - android:inputType="text"/> + android:inputType="text" + android:padding="3dp"/> + android:textSize="20sp"/> - - - + android:layout_height="match_parent"> + + + + + + + + android:padding="2dp" + android:singleLine="true" + android:textSize="20sp"/>