4.0版:参考别人的代码终于实现了多窗口
This commit is contained in:
parent
109cd67b13
commit
aec6ce7b2c
|
@ -1,4 +1,4 @@
|
||||||
# Android:海天鹰浏览器
|
# Android:海天鹰浏览器
|
||||||
基于 Android WebView 组件的浏览器,支持收藏夹、图片广告过滤、视频独立播放。
|
基于 Android WebView 的多窗口浏览器,支持收藏夹、图片广告过滤、视频独立播放。
|
||||||
### 主界面
|
### 主界面
|
||||||

|

|
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.hty.browser"
|
package="com.hty.browser"
|
||||||
android:versionCode="3"
|
android:versionCode="4"
|
||||||
android:versionName="3.12">
|
android:versionName="4.0">
|
||||||
|
|
||||||
<uses-sdk
|
<uses-sdk
|
||||||
android:minSdkVersion="16"
|
android:minSdkVersion="16"
|
||||||
|
@ -38,7 +38,6 @@
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
<!-- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>-->
|
|
||||||
<!-- 查询网络状态权限 -->
|
<!-- 查询网络状态权限 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
<uses-permission android:name="andorid.permission.CHANGE_CONFIGURATION"/>
|
<uses-permission android:name="andorid.permission.CHANGE_CONFIGURATION"/>
|
||||||
|
|
|
@ -9,18 +9,20 @@ p { text-indent:2em; }
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h2 align=center><img src=logo.png><br>海天鹰浏览器 V3.12</h2>
|
<h2 align=center><img src=logo.png><br>海天鹰浏览器 V4.0</h2>
|
||||||
<p>内置扩展的浏览器。</p>
|
<p>内置扩展的浏览器。</p>
|
||||||
<p>扩展:链接关键字过滤,链接关键字高亮,图片自定义过滤,视频独立播放。</p>
|
<p>扩展:链接关键字过滤,链接关键字高亮,图片自定义过滤,视频独立播放。</p>
|
||||||
<p>作者:黄颖</p>
|
<p>作者:黄颖</p>
|
||||||
<p>源码:<a href="https://github.com/sonichy/Android_HTYBrowser" target="_blank">https://github.com/sonichy/Android_HTYBrowser</a></p>
|
<p>源码:<a href="https://github.com/sonichy/Android_HTYBrowser" target="_blank">https://github.com/sonichy/Android_HTYBrowser</a></p>
|
||||||
<p>E-mail:sonichy@163.com</p>
|
<p>E-mail:sonichy@163.com</p>
|
||||||
<h3>参考:</h3>
|
<h3>参考:</h3>
|
||||||
|
<p><a href="https://gitee.com/daiji111/flying_browser/blob/master/app/src/main/java/com/daiji/feixiang/BrowserActivity.java">多窗口管理</a></p>
|
||||||
<p><a href="https://www.jianshu.com/p/6e38e1ef203a" target="_blank">Android WebView 三种文件下载方式</a></p>
|
<p><a href="https://www.jianshu.com/p/6e38e1ef203a" target="_blank">Android WebView 三种文件下载方式</a></p>
|
||||||
<p><a href="https://blog.csdn.net/lowprofile_coding/article/details/77852131" target="_blank">自动安装apk包</a></p>
|
<p><a href="https://blog.csdn.net/lowprofile_coding/article/details/77852131" target="_blank">自动安装apk包</a></p>
|
||||||
<p><a href="https://stackoverflow.com/questions/3462582/display-the-android-webviews-favicon" target="_blank">获取网页图标</a></p>
|
<p><a href="https://stackoverflow.com/questions/3462582/display-the-android-webviews-favicon" target="_blank">获取网页图标</a></p>
|
||||||
<h3>更新日志:</h3>
|
<h3>更新日志:</h3>
|
||||||
<h3>V3.12 (2019-02-25)</h3><ol><li>支持跨域。</li><li>获取网页图标。</li><li>屏蔽百度首页视频百度好看跳转下载。</li><li>Android API 19 以上开启调试,运行 adb devices 连接手机,Chrome 浏览器 chrome://inspect 查看。</li></ol>
|
<h3>V4.0 (2019-02-13)</h3><ol><li>实现多窗口。</li></ol>
|
||||||
|
<h3>V3.12 (2019-02-27)</h3><ol><li>支持跨域。</li><li>获取网页图标。</li><li>屏蔽百度首页视频百度好看跳转下载。</li><li>Android API 19 以上开启调试,运行 adb devices 连接手机,Chrome 浏览器 chrome://inspect 查看。</li><li>增加标题按钮,点击标题按钮显示地址栏,点击网页隐藏地址栏。</li></ol>
|
||||||
<h3>V3.11 (2019-02-13)</h3><ol><li>链接中的关键字屏蔽、高亮可设置。</li></ol>
|
<h3>V3.11 (2019-02-13)</h3><ol><li>链接中的关键字屏蔽、高亮可设置。</li></ol>
|
||||||
<h3>V3.10 (2019-02-10)</h3><ol><li>增加:收藏前修改,收藏后修改,修改校验。</li></ol>
|
<h3>V3.10 (2019-02-10)</h3><ol><li>增加:收藏前修改,收藏后修改,修改校验。</li></ol>
|
||||||
<h3>V3.9 (2018-12-20)</h3><ol><li>视频独立播放JS读不到iframe里的video,使用跳转iframe代替。</li></ol>
|
<h3>V3.9 (2018-12-20)</h3><ol><li>视频独立播放JS读不到iframe里的video,使用跳转iframe代替。</li></ol>
|
||||||
|
|
|
@ -10,14 +10,9 @@ import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.graphics.Bitmap;
|
|
||||||
import android.graphics.BitmapFactory;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.Message;
|
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
@ -25,7 +20,6 @@ import android.view.View;
|
||||||
import android.view.View.OnCreateContextMenuListener;
|
import android.view.View.OnCreateContextMenuListener;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
import android.webkit.WebIconDatabase;
|
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.AdapterView.AdapterContextMenuInfo;
|
import android.widget.AdapterView.AdapterContextMenuInfo;
|
||||||
import android.widget.AdapterView.OnItemClickListener;
|
import android.widget.AdapterView.OnItemClickListener;
|
||||||
|
@ -38,12 +32,7 @@ import android.widget.SimpleCursorAdapter;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
public class FavoriteActivity extends Activity {
|
public class FavoriteActivity extends Activity {
|
||||||
SimpleCursorAdapter adapter;
|
SimpleCursorAdapter adapter;
|
||||||
|
@ -51,7 +40,6 @@ public class FavoriteActivity extends Activity {
|
||||||
EditText editText;
|
EditText editText;
|
||||||
InputMethodManager IMM;
|
InputMethodManager IMM;
|
||||||
ImageButton imageButton_clear;
|
ImageButton imageButton_clear;
|
||||||
WebIconDatabase WID;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -66,8 +54,6 @@ public class FavoriteActivity extends Activity {
|
||||||
imageButton_clear.setVisibility(View.GONE);
|
imageButton_clear.setVisibility(View.GONE);
|
||||||
search(editText.getText().toString());
|
search(editText.getText().toString());
|
||||||
IMM = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
IMM = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
WID = WebIconDatabase.getInstance();
|
|
||||||
WID.open(getDir("icons", MODE_PRIVATE).getPath());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ButtonListener implements View.OnClickListener {
|
class ButtonListener implements View.OnClickListener {
|
||||||
|
@ -190,40 +176,24 @@ public class FavoriteActivity extends Activity {
|
||||||
|
|
||||||
void search(String s) {
|
void search(String s) {
|
||||||
DBHelper helper = new DBHelper(this);
|
DBHelper helper = new DBHelper(this);
|
||||||
Cursor c = helper.query(s);
|
Cursor cursor1 = helper.query(s);
|
||||||
String[] from = { "_id", "title", "website", "website" };
|
String[] from = { "_id", "title", "website", "website" };
|
||||||
int[] to = { R.id.id, R.id.title, R.id.website, R.id.imageView_favicon };
|
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(){
|
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){
|
||||||
public boolean setViewValue(View view, Cursor cursor, int columnIndex){
|
public boolean setViewValue(View view, Cursor cursor, int columnIndex){
|
||||||
//Log.e("L192", view.toString() + 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);
|
String website = cursor.getString(columnIndex);
|
||||||
// if (website.startsWith("https://")) {
|
if (website.startsWith("https://")) {
|
||||||
// //((ImageView) view).setImageResource(android.R.drawable.ic_secure);
|
((ImageView) view).setImageResource(android.R.drawable.ic_secure);
|
||||||
// Runner1 r1 = new Runner1();
|
} else if (website.startsWith("http://")) {
|
||||||
// r1.setUrl("https://static.easyicon.net/preview/52/523893.gif");
|
((ImageView) view).setImageResource(android.R.drawable.ic_partial_secure);
|
||||||
// r1.setView(view);
|
} else if (website.startsWith("file://")) {
|
||||||
// Thread thread1 = new Thread(r1);
|
((ImageView) view).setImageResource(android.R.drawable.stat_notify_sdcard);
|
||||||
// thread1.start();
|
} else {
|
||||||
// return true;
|
((ImageView) view).setImageResource(R.drawable.network);
|
||||||
// } 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();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -231,32 +201,6 @@ public class FavoriteActivity extends Activity {
|
||||||
});
|
});
|
||||||
listView.setAdapter(adapter);
|
listView.setAdapter(adapter);
|
||||||
|
|
||||||
// WebIconDatabase WID = WebIconDatabase.getInstance();
|
|
||||||
// WID.open(getDir("icons", MODE_PRIVATE).getPath());
|
|
||||||
// for (int i=0; i<adapter.getCount(); i++) {
|
|
||||||
// LinearLayout layout = (LinearLayout) listView.getAdapter().getView(i, null, null);
|
|
||||||
// String website = ((TextView) layout.findViewById(R.id.website)).getText().toString();
|
|
||||||
// if (website.startsWith("https://")) {
|
|
||||||
// Log.e("star_big_on", website);
|
|
||||||
// ImageView imageView = (ImageView) layout.findViewById(R.id.imageView_favicon);
|
|
||||||
// imageView.setImageResource(android.R.drawable.star_big_on);
|
|
||||||
// } else if (website.startsWith("http://")){
|
|
||||||
// ImageView imageView = (ImageView) layout.findViewById(R.id.imageView_favicon);
|
|
||||||
// imageView.setImageResource(android.R.drawable.star_big_off);
|
|
||||||
// Log.e("star_big_off", website);
|
|
||||||
// } else {
|
|
||||||
// Log.e("earth", website);
|
|
||||||
// }
|
|
||||||
// WID.requestIconForPageUrl(website, new WebIconDatabase.IconListener() {
|
|
||||||
// public void onReceivedIcon(String url, Bitmap icon) {
|
|
||||||
// Log.e("onReceivedIcon", url);
|
|
||||||
// ImageView imageView = (ImageView) layout.findViewById(R.id.imageView_favicon);
|
|
||||||
// imageView.setImageBitmap(icon);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// adapter.notifyDataSetChanged();
|
|
||||||
|
|
||||||
listView.setOnItemClickListener(new OnItemClickListener() {
|
listView.setOnItemClickListener(new OnItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
|
public void onItemClick(AdapterView<?> 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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -34,6 +34,7 @@ import android.content.pm.PackageManager;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
import android.graphics.Matrix;
|
import android.graphics.Matrix;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
import android.media.MediaScannerConnection;
|
import android.media.MediaScannerConnection;
|
||||||
|
@ -76,23 +77,25 @@ import android.webkit.WebView.FindListener;
|
||||||
import android.webkit.WebView.HitTestResult;
|
import android.webkit.WebView.HitTestResult;
|
||||||
import android.webkit.WebViewClient;
|
import android.webkit.WebViewClient;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
public class MainActivity extends Activity {
|
public class MainActivity extends Activity {
|
||||||
|
Button button_title, button_page;
|
||||||
TextView findCount;
|
TextView findCount;
|
||||||
EditText editText1, findText;
|
EditText editText1, findText;
|
||||||
ImageButton btnGo, btnBack, btnForward, btnMenu, findPrev, findNext, findClose, imageButton_info;
|
ImageButton btnGo, btnBack, btnForward, btnMenu, findPrev, findNext, findClose, imageButton_info;
|
||||||
WebView webView1;
|
|
||||||
// RelativeLayout RelativeLayout1;
|
// RelativeLayout RelativeLayout1;
|
||||||
LinearLayout LinearLayout1, LinearLayout2;
|
LinearLayout LinearLayout1, LinearLayout2;
|
||||||
FrameLayout video, findbar;
|
FrameLayout webViewLayout, video, findbar;
|
||||||
ImageView imageView1;
|
ImageView imageView1;
|
||||||
InputMethodManager IMM;
|
InputMethodManager IMM;
|
||||||
ProgressBar pgb1;
|
ProgressBar pgb1;
|
||||||
|
@ -105,6 +108,8 @@ public class MainActivity extends Activity {
|
||||||
SharedPreferences sharedPreferences;
|
SharedPreferences sharedPreferences;
|
||||||
Thread CU;
|
Thread CU;
|
||||||
long downloadIdUpdate;
|
long downloadIdUpdate;
|
||||||
|
List<WebView> list_webView = new ArrayList<>();
|
||||||
|
int currentPage;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -117,14 +122,12 @@ public class MainActivity extends Activity {
|
||||||
dir.mkdirs();
|
dir.mkdirs();
|
||||||
}
|
}
|
||||||
setContentView(R.layout.activity_main);
|
setContentView(R.layout.activity_main);
|
||||||
//ptitle = "百度";
|
|
||||||
//urln = "http//www.baidu.com";
|
|
||||||
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
|
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
|
||||||
|
|
||||||
LinearLayout1 = (LinearLayout) findViewById(R.id.LinearLayout1);
|
LinearLayout1 = (LinearLayout) findViewById(R.id.LinearLayout1);
|
||||||
LinearLayout2 = (LinearLayout) findViewById(R.id.LinearLayout2);
|
LinearLayout2 = (LinearLayout) findViewById(R.id.LinearLayout2);
|
||||||
// RelativeLayout1 = (RelativeLayout)
|
// RelativeLayout1 = (RelativeLayout) findViewById(R.id.RelativeLayout1);
|
||||||
// findViewById(R.id.RelativeLayout1);
|
webViewLayout = (FrameLayout) findViewById(R.id.webViewLayout);
|
||||||
video = (FrameLayout) findViewById(R.id.video);
|
video = (FrameLayout) findViewById(R.id.video);
|
||||||
findbar = (FrameLayout) findViewById(R.id.findbar);
|
findbar = (FrameLayout) findViewById(R.id.findbar);
|
||||||
pgb1 = (ProgressBar) findViewById(R.id.progressBar1);
|
pgb1 = (ProgressBar) findViewById(R.id.progressBar1);
|
||||||
|
@ -155,7 +158,10 @@ public class MainActivity extends Activity {
|
||||||
findNext = (ImageButton) findViewById(R.id.findNext);
|
findNext = (ImageButton) findViewById(R.id.findNext);
|
||||||
findClose = (ImageButton) findViewById(R.id.findClose);
|
findClose = (ImageButton) findViewById(R.id.findClose);
|
||||||
imageButton_info = (ImageButton) findViewById(R.id.imageButton_info);
|
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());
|
btnGo.setOnClickListener(new ButtonListener());
|
||||||
btnBack.setOnClickListener(new ButtonListener());
|
btnBack.setOnClickListener(new ButtonListener());
|
||||||
btnForward.setOnClickListener(new ButtonListener());
|
btnForward.setOnClickListener(new ButtonListener());
|
||||||
|
@ -165,218 +171,9 @@ public class MainActivity extends Activity {
|
||||||
findNext.setOnClickListener(new ButtonListener());
|
findNext.setOnClickListener(new ButtonListener());
|
||||||
findClose.setOnClickListener(new ButtonListener());
|
findClose.setOnClickListener(new ButtonListener());
|
||||||
editText1 = (EditText) findViewById(R.id.EditText1);
|
editText1 = (EditText) findViewById(R.id.EditText1);
|
||||||
webView1 = (WebView) findViewById(R.id.WebView1);
|
editText1.setVisibility(View.GONE);
|
||||||
WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath()); //获取图标数据库路径
|
WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath()); //获取图标数据库路径
|
||||||
registerForContextMenu(webView1);
|
newWindow();
|
||||||
// 开启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(
|
|
||||||
"",
|
|
||||||
"<html><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"/><style>h1{font-size:10vw;margin:40vh auto;text-align:center;}</style><h1>网络未连接</h1></html>",
|
|
||||||
"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<Uri[]> 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<a.length;i++){for(var j=0;j<sl.length;j++){if(a[i].textContent.indexOf(sl[j])!=-1){a[i].textContent='';}}}";
|
|
||||||
view.loadUrl(js);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 链接关键字高亮
|
|
||||||
if(sharedPreferences.getBoolean("switch_highlight",false)){
|
|
||||||
String shl = sharedPreferences.getString("highlight","");
|
|
||||||
if(!shl.equals("")) {
|
|
||||||
String js = "javascript:var s='"+shl+"';var sl=s.split(';');var a=document.getElementsByTagName('a');for(var i=0;i<a.length;i++){for(var j=0;j<sl.length;j++){if(a[i].textContent.indexOf(sl[j])!=-1){a[i].style.color='white';a[i].style.backgroundColor='#DA3434';}}}";
|
|
||||||
view.loadUrl(js);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取网页标题
|
|
||||||
@Override
|
|
||||||
public void onReceivedTitle(WebView view, String title) {
|
|
||||||
super.onReceivedTitle(view, title);
|
|
||||||
ptitle = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 接收网站图标(favicon)
|
|
||||||
public void onReceivedIcon(WebView view, Bitmap icon) {
|
|
||||||
imageButton_info.setImageBitmap(icon);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 播放网络视频时全屏会被调用的方法
|
|
||||||
@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 boolean onConsoleMessage(ConsoleMessage consoleMessage) {
|
|
||||||
Log.d("onConsoleMessage", consoleMessage.message() + " at " + consoleMessage.sourceId() + ":" + consoleMessage.lineNumber());
|
|
||||||
return super.onConsoleMessage(consoleMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定位权限
|
|
||||||
@Override
|
|
||||||
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
|
|
||||||
callback.invoke(origin, true, false);
|
|
||||||
super.onGeolocationPermissionsShowPrompt(origin, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
editText1.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
editText1.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -393,7 +190,7 @@ public class MainActivity extends Activity {
|
||||||
@Override
|
@Override
|
||||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
||||||
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
|
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
|
||||||
webView1.findAllAsync(findText.getText().toString());
|
list_webView.get(currentPage).findAllAsync(findText.getText().toString());
|
||||||
IMM.hideSoftInputFromWindow(findText.getWindowToken(), 0);
|
IMM.hideSoftInputFromWindow(findText.getWindowToken(), 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -408,7 +205,7 @@ public class MainActivity extends Activity {
|
||||||
// start 输入框中改变后的字符串的起始位置
|
// start 输入框中改变后的字符串的起始位置
|
||||||
// before 输入框中改变前的字符串的位置 默认为0
|
// before 输入框中改变前的字符串的位置 默认为0
|
||||||
// count 输入框中改变后的一共输入字符串的数量
|
// count 输入框中改变后的一共输入字符串的数量
|
||||||
webView1.findAllAsync(text.toString());
|
list_webView.get(currentPage).findAllAsync(text.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -433,13 +230,6 @@ public class MainActivity extends Activity {
|
||||||
loadPage(sharedPreferences.getString("homepage","http://www.baidu.com"));
|
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);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
CU = new Thread() {
|
CU = new Thread() {
|
||||||
|
@ -512,20 +302,51 @@ public class MainActivity extends Activity {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
switch (v.getId()) {
|
switch (v.getId()) {
|
||||||
|
case R.id.button_title:
|
||||||
|
button_title.setVisibility(View.GONE);
|
||||||
|
editText1.setVisibility(View.VISIBLE);
|
||||||
|
break;
|
||||||
|
case R.id.button_page:
|
||||||
|
List<String> 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:
|
case R.id.ImageButtonGo:
|
||||||
loadPage(editText1.getText().toString());
|
loadPage(editText1.getText().toString());
|
||||||
break;
|
break;
|
||||||
case R.id.ImageButtonBack:
|
case R.id.ImageButtonBack:
|
||||||
if (webView1.canGoBack()) {
|
if (list_webView.get(currentPage).canGoBack()) {
|
||||||
webView1.goBack();
|
list_webView.get(currentPage).goBack();
|
||||||
btnForward.setEnabled(true);
|
btnForward.setEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
btnBack.setEnabled(false);
|
btnBack.setEnabled(false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case R.id.ImageButtonForward:
|
case R.id.ImageButtonForward:
|
||||||
if (webView1.canGoForward()) {
|
if (list_webView.get(currentPage).canGoForward()) {
|
||||||
webView1.goForward();
|
list_webView.get(currentPage).goForward();
|
||||||
btnBack.setEnabled(true);
|
btnBack.setEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
btnForward.setEnabled(false);
|
btnForward.setEnabled(false);
|
||||||
|
@ -539,10 +360,10 @@ public class MainActivity extends Activity {
|
||||||
imageView1.setVisibility(View.GONE);
|
imageView1.setVisibility(View.GONE);
|
||||||
break;
|
break;
|
||||||
case R.id.findPrev:
|
case R.id.findPrev:
|
||||||
webView1.findNext(false);
|
list_webView.get(currentPage).findNext(false);
|
||||||
break;
|
break;
|
||||||
case R.id.findNext:
|
case R.id.findNext:
|
||||||
webView1.findNext(true);
|
list_webView.get(currentPage).findNext(true);
|
||||||
break;
|
break;
|
||||||
case R.id.findClose:
|
case R.id.findClose:
|
||||||
findText.setText("");
|
findText.setText("");
|
||||||
|
@ -589,7 +410,7 @@ public class MainActivity extends Activity {
|
||||||
public boolean onContextItemSelected(MenuItem item) {
|
public boolean onContextItemSelected(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case 0:
|
case 0:
|
||||||
webView1.loadUrl(HTRE);
|
list_webView.get(currentPage).loadUrl(HTRE);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
ClipboardManager mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
|
ClipboardManager mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
@ -614,8 +435,8 @@ public class MainActivity extends Activity {
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
String js = "javascript:var imgs=document.getElementsByTagName('img');for(i=0;i<imgs.length;i++){if(imgs[i].src=='" + HTRE +"'){imgs[i].style.display='none';break;}}";
|
String js = "javascript:var imgs=document.getElementsByTagName('img');for(i=0;i<imgs.length;i++){if(imgs[i].src=='" + HTRE +"'){imgs[i].style.display='none';break;}}";
|
||||||
webView1.loadUrl(js);
|
list_webView.get(currentPage).loadUrl(js);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -627,8 +448,8 @@ public class MainActivity extends Activity {
|
||||||
imageView1.setVisibility(View.GONE);
|
imageView1.setVisibility(View.GONE);
|
||||||
quitFullScreen();
|
quitFullScreen();
|
||||||
} else {
|
} else {
|
||||||
if (webView1.canGoBack()) {
|
if (list_webView.get(currentPage).canGoBack()) {
|
||||||
webView1.goBack();
|
list_webView.get(currentPage).goBack();
|
||||||
} else {
|
} else {
|
||||||
// moveTaskToBack(false);
|
// moveTaskToBack(false);
|
||||||
// MenuDialog();
|
// MenuDialog();
|
||||||
|
@ -637,20 +458,18 @@ public class MainActivity extends Activity {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (keyCode == KeyEvent.KEYCODE_ENTER) {
|
if (keyCode == KeyEvent.KEYCODE_ENTER) {
|
||||||
webView1.findAllAsync(findText.getText().toString());
|
list_webView.get(currentPage).findAllAsync(findText.getText().toString());
|
||||||
IMM.hideSoftInputFromWindow(findText.getWindowToken(), 0);
|
IMM.hideSoftInputFromWindow(findText.getWindowToken(), 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (keyCode == KeyEvent.KEYCODE_F) {
|
if (keyCode == KeyEvent.KEYCODE_F) {
|
||||||
findbar.setVisibility(View.VISIBLE);
|
findbar.setVisibility(View.VISIBLE);
|
||||||
findText.requestFocus();
|
findText.requestFocus();
|
||||||
webView1.findAllAsync(findText.getText().toString());
|
list_webView.get(currentPage).findAllAsync(findText.getText().toString());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (keyCode == KeyEvent.KEYCODE_ESCAPE) {
|
if (keyCode == KeyEvent.KEYCODE_ESCAPE) {
|
||||||
findbar.setVisibility(View.GONE);
|
findbar.setVisibility(View.GONE);
|
||||||
// Toast.makeText(getApplicationContext(), "Esc Pressed",
|
|
||||||
// Toast.LENGTH_SHORT).show();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onKeyDown(keyCode, event);
|
return super.onKeyDown(keyCode, event);
|
||||||
|
@ -665,7 +484,7 @@ public class MainActivity extends Activity {
|
||||||
Log.e("webview", url);
|
Log.e("webview", url);
|
||||||
IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0);
|
IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0);
|
||||||
findText.setText("");
|
findText.setText("");
|
||||||
webView1.loadUrl(url);
|
list_webView.get(currentPage).loadUrl(url);
|
||||||
// btnBack.setEnabled(true);
|
// btnBack.setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -691,7 +510,7 @@ public class MainActivity extends Activity {
|
||||||
}
|
}
|
||||||
if (requestCode == 0) {
|
if (requestCode == 0) {
|
||||||
if (intent != null)
|
if (intent != null)
|
||||||
webView1.loadUrl(intent.getStringExtra("url"));
|
list_webView.get(currentPage).loadUrl(intent.getStringExtra("url"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -779,16 +598,16 @@ public class MainActivity extends Activity {
|
||||||
|
|
||||||
void pauseVideo() {
|
void pauseVideo() {
|
||||||
String js = "javascript:var obj = document.getElementsByTagName('video');for (var i = 0; i < obj.length; i++) { obj[i].pause();}";
|
String js = "javascript:var obj = document.getElementsByTagName('video');for (var i = 0; i < obj.length; i++) { obj[i].pause();}";
|
||||||
webView1.loadUrl(js);
|
list_webView.get(currentPage).loadUrl(js);
|
||||||
}
|
}
|
||||||
|
|
||||||
void playVideo() {
|
void playVideo() {
|
||||||
String js = "javascript:var obj = document.getElementsByTagName('video');for (var i = 0; i < obj.length; i++) { obj[i].play();}";
|
String js = "javascript:var obj = document.getElementsByTagName('video');for (var i = 0; i < obj.length; i++) { obj[i].play();}";
|
||||||
webView1.loadUrl(js);
|
list_webView.get(currentPage).loadUrl(js);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuDialog() {
|
void MenuDialog() {
|
||||||
String[] items = { "收藏当前页", "收藏夹", "查找", "分享", "视频独立播放", "查看源码", "主页", "全屏", "广告过滤规则", "设置", "检查更新", "关于", "退出" };
|
String[] items = { "新建窗口", "关闭当前窗口", "收藏当前页", "收藏夹", "查找", "分享", "视频独立播放", "查看源码", "主页", "全屏", "广告过滤规则", "设置", "检查更新", "关于", "退出" };
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
builder.setTitle("菜单");
|
builder.setTitle("菜单");
|
||||||
builder.setIcon(R.drawable.ic_launcher);
|
builder.setIcon(R.drawable.ic_launcher);
|
||||||
|
@ -798,6 +617,24 @@ public class MainActivity extends Activity {
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
switch (which) {
|
switch (which) {
|
||||||
case 0:
|
case 0:
|
||||||
|
newWindow();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
list_webView.remove(currentPage);
|
||||||
|
if(list_webView.size() == 0){
|
||||||
|
newWindow();
|
||||||
|
}else{
|
||||||
|
currentPage--;
|
||||||
|
button_page.setText(currentPage + 1 + "");
|
||||||
|
webViewLayout.removeAllViews();
|
||||||
|
WebView webView = list_webView.get(currentPage);
|
||||||
|
webViewLayout.addView(webView);
|
||||||
|
button_title.setText(webView.getTitle());
|
||||||
|
editText1.setText(webView.getUrl());
|
||||||
|
imageButton_info.setImageBitmap(webView.getFavicon());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
LinearLayout layout = new LinearLayout(MainActivity.this);
|
LinearLayout layout = new LinearLayout(MainActivity.this);
|
||||||
layout.setOrientation(LinearLayout.VERTICAL);
|
layout.setOrientation(LinearLayout.VERTICAL);
|
||||||
final EditText ET_title = new EditText(MainActivity.this);
|
final EditText ET_title = new EditText(MainActivity.this);
|
||||||
|
@ -809,7 +646,8 @@ public class MainActivity extends Activity {
|
||||||
ET_url.setText(urln);
|
ET_url.setText(urln);
|
||||||
layout.addView(ET_url);
|
layout.addView(ET_url);
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
||||||
Bitmap icon = webView1.getFavicon();
|
Bitmap icon = list_webView.get(currentPage).getFavicon();
|
||||||
|
if(icon == null) icon = BitmapFactory.decodeResource(getResources(), R.drawable.network);
|
||||||
Matrix matrix = new Matrix();
|
Matrix matrix = new Matrix();
|
||||||
matrix.postScale((float)100/icon.getWidth(), (float)100/icon.getHeight());
|
matrix.postScale((float)100/icon.getWidth(), (float)100/icon.getHeight());
|
||||||
Bitmap bitmap = Bitmap.createBitmap(icon, 0, 0, icon.getWidth(), icon.getHeight(), matrix, true);
|
Bitmap bitmap = Bitmap.createBitmap(icon, 0, 0, icon.getWidth(), icon.getHeight(), matrix, true);
|
||||||
|
@ -884,53 +722,53 @@ public class MainActivity extends Activity {
|
||||||
});
|
});
|
||||||
builder.create().show();
|
builder.create().show();
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 3:
|
||||||
Intent intent = new Intent(MainActivity.this, FavoriteActivity.class);
|
Intent intent = new Intent(MainActivity.this, FavoriteActivity.class);
|
||||||
startActivityForResult(intent, 0);
|
startActivityForResult(intent, 0);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 4:
|
||||||
findbar.setVisibility(View.VISIBLE);
|
findbar.setVisibility(View.VISIBLE);
|
||||||
findText.requestFocus();
|
findText.requestFocus();
|
||||||
webView1.findAllAsync(findText.getText().toString());
|
list_webView.get(currentPage).findAllAsync(findText.getText().toString());
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 5:
|
||||||
intent = new Intent();
|
intent = new Intent();
|
||||||
intent.setAction(Intent.ACTION_SEND);
|
intent.setAction(Intent.ACTION_SEND);
|
||||||
intent.putExtra(Intent.EXTRA_TEXT, webView1.getUrl());
|
intent.putExtra(Intent.EXTRA_TEXT, list_webView.get(currentPage).getUrl());
|
||||||
intent.setType("text/plain");
|
intent.setType("text/plain");
|
||||||
startActivity(Intent.createChooser(intent, "分享"));
|
startActivity(Intent.createChooser(intent, "分享"));
|
||||||
break;
|
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='<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'; document.body.innerHTML=''; var pre=document.createElement('pre'); document.body.appendChild(pre); pre.textContent=s;";
|
|
||||||
webView1.loadUrl(js);
|
|
||||||
break;
|
|
||||||
case 6:
|
case 6:
|
||||||
webView1.loadUrl(sharedPreferences.getString("homepage",""));
|
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; }";
|
||||||
|
list_webView.get(currentPage).loadUrl(js);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
|
js = "javascript:var s='<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'; document.body.innerHTML=''; var pre=document.createElement('pre'); document.body.appendChild(pre); pre.textContent=s;";
|
||||||
|
list_webView.get(currentPage).loadUrl(js);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
list_webView.get(currentPage).loadUrl(sharedPreferences.getString("homepage",""));
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
LinearLayout2.setVisibility(View.GONE);
|
LinearLayout2.setVisibility(View.GONE);
|
||||||
pgb1.setVisibility(View.GONE);
|
pgb1.setVisibility(View.GONE);
|
||||||
isFullScreen = true;
|
isFullScreen = true;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 10:
|
||||||
DialogBlockList();
|
DialogBlockList();
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 11:
|
||||||
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
|
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 12:
|
||||||
isManualCheckUpdate = true;
|
isManualCheckUpdate = true;
|
||||||
new Thread(CU).start();
|
new Thread(CU).start();
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 13:
|
||||||
webView1.loadUrl("file:///android_asset/about.htm");
|
list_webView.get(currentPage).loadUrl("file:///android_asset/about.htm");
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 14:
|
||||||
MainActivity.this.finish();
|
MainActivity.this.finish();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1090,6 +928,7 @@ public class MainActivity extends Activity {
|
||||||
ostream.close();
|
ostream.close();
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
return "";
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@ -1104,13 +943,13 @@ public class MainActivity extends Activity {
|
||||||
rules = rules.substring(0, rules.length() - 1);
|
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<img.length;i++){for(j=0;j<rule.length;j++){if(img[i].src.indexOf(rule[j])!=-1){img[i].style.display='none';}}}";
|
String js = "javascript:var rules='" + rules + "';var rule=new Array();rule=rules.split(',');var img=document.getElementsByTagName('img');for(i=0;i<img.length;i++){for(j=0;j<rule.length;j++){if(img[i].src.indexOf(rule[j])!=-1){img[i].style.display='none';}}}";
|
||||||
webView1.loadUrl(js);
|
list_webView.get(currentPage).loadUrl(js);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void iframeBlock(){
|
void iframeBlock(){
|
||||||
String js = "javascript:var iframes=document.getElementsByTagName('iframe');for(i=0;i<iframes.length;i++){iframes[i].style.display='none';}document.getElementById('win-pop-foot').style.display='none';document.getElementById('win-pop-foot1').style.display='none';";
|
String js = "javascript:var iframes=document.getElementsByTagName('iframe');for(i=0;i<iframes.length;i++){iframes[i].style.display='none';}document.getElementById('win-pop-foot').style.display='none';document.getElementById('win-pop-foot1').style.display='none';";
|
||||||
webView1.loadUrl(js);
|
list_webView.get(currentPage).loadUrl(js);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 调用系统下载,https://www.jianshu.com/p/6e38e1ef203a
|
// 调用系统下载,https://www.jianshu.com/p/6e38e1ef203a
|
||||||
|
@ -1124,7 +963,7 @@ public class MainActivity extends Activity {
|
||||||
// 设置通知栏的标题,如果不设置,默认使用文件名
|
// 设置通知栏的标题,如果不设置,默认使用文件名
|
||||||
// request.setTitle("This is title");
|
// request.setTitle("This is title");
|
||||||
// 设置通知栏的描述
|
// 设置通知栏的描述
|
||||||
request.setDescription(surl);
|
request.setDescription(surl);
|
||||||
// 允许在计费流量下下载
|
// 允许在计费流量下下载
|
||||||
request.setAllowedOverMetered(false);
|
request.setAllowedOverMetered(false);
|
||||||
// 允许该记录在下载管理界面可见
|
// 允许该记录在下载管理界面可见
|
||||||
|
@ -1163,8 +1002,8 @@ public class MainActivity extends Activity {
|
||||||
Log.e("Version", versionS + " > " + versionL + " ?");
|
Log.e("Version", versionS + " > " + versionL + " ?");
|
||||||
String[] AVersionS = versionS.split("\\.");
|
String[] AVersionS = versionS.split("\\.");
|
||||||
String[] AVersionL = versionL.split("\\.");
|
String[] AVersionL = versionL.split("\\.");
|
||||||
//Log.e("Version: ", AVersionS[0] + " > " + AVersionL[0] + " ? " + AVersionS[1] + " > " + 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[1]) > Integer.parseInt(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();
|
Looper.prepare();
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
||||||
builder.setIcon(R.drawable.ic_launcher);
|
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(
|
||||||
|
"",
|
||||||
|
"<html><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"/><style>h1{font-size:10vw;margin:40vh auto;text-align:center;}</style><h1>网络未连接</h1></html>",
|
||||||
|
"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<Uri[]> 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<a.length;i++){for(var j=0;j<sl.length;j++){if(a[i].textContent.indexOf(sl[j])!=-1){a[i].textContent='';}}}";
|
||||||
|
view.loadUrl(js);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 链接关键字高亮
|
||||||
|
if(sharedPreferences.getBoolean("switch_highlight",false)){
|
||||||
|
String shl = sharedPreferences.getString("highlight","");
|
||||||
|
if(!shl.equals("")) {
|
||||||
|
String js = "javascript:var s='"+shl+"';var sl=s.split(';');var a=document.getElementsByTagName('a');for(var i=0;i<a.length;i++){for(var j=0;j<sl.length;j++){if(a[i].textContent.indexOf(sl[j])!=-1){a[i].style.color='white';a[i].style.backgroundColor='#DA3434';}}}";
|
||||||
|
view.loadUrl(js);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取网页标题
|
||||||
|
@Override
|
||||||
|
public void onReceivedTitle(WebView view, String title) {
|
||||||
|
super.onReceivedTitle(view, title);
|
||||||
|
button_title.setText(title);
|
||||||
|
ptitle = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 接收网站图标(favicon)
|
||||||
|
public void onReceivedIcon(WebView view, Bitmap icon) {
|
||||||
|
imageButton_info.setImageBitmap(icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 播放网络视频时全屏会被调用的方法
|
||||||
|
@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 boolean onConsoleMessage(ConsoleMessage consoleMessage) {
|
||||||
|
Log.d("onConsoleMessage", consoleMessage.message() + " at " + consoleMessage.sourceId() + ":" + consoleMessage.lineNumber());
|
||||||
|
return super.onConsoleMessage(consoleMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 定位权限
|
||||||
|
@Override
|
||||||
|
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
|
||||||
|
callback.invoke(origin, true, false);
|
||||||
|
super.onGeolocationPermissionsShowPrompt(origin, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
webView.setDownloadListener(new MyWebViewDownLoadListener());
|
||||||
|
|
||||||
|
webView.setOnTouchListener(new OnTouchListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
button_title.setVisibility(View.VISIBLE);
|
||||||
|
editText1.setVisibility(View.GONE);
|
||||||
|
webView.requestFocus();
|
||||||
|
IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -42,6 +42,15 @@
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:src="@android:drawable/ic_media_ff"/>
|
android:src="@android:drawable/ic_media_ff"/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/button_page"
|
||||||
|
android:layout_width="25dp"
|
||||||
|
android:layout_height="25dp"
|
||||||
|
android:layout_marginRight="2dp"
|
||||||
|
android:background="@drawable/border"
|
||||||
|
android:text="0"
|
||||||
|
android:textColor="#808080"/>
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/imageButton_info"
|
android:id="@+id/imageButton_info"
|
||||||
android:layout_width="25dp"
|
android:layout_width="25dp"
|
||||||
|
@ -50,6 +59,15 @@
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:src="@android:drawable/ic_menu_info_details"/>
|
android:src="@android:drawable/ic_menu_info_details"/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/button_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="#ffffff"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:singleLine="true"/>
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/EditText1"
|
android:id="@+id/EditText1"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
|
@ -79,7 +97,16 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<ProgressBar
|
||||||
|
android:id="@+id/progressBar1"
|
||||||
|
style="@android:style/Widget.Holo.ProgressBar.Horizontal"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_alignTop="@+id/WebView1"
|
||||||
|
android:progressDrawable="@drawable/progressbar_color"/>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/webViewLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
@ -88,15 +115,8 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
<ProgressBar
|
|
||||||
android:id="@+id/progressBar1"
|
|
||||||
style="@android:style/Widget.Holo.ProgressBar.Horizontal"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:layout_alignTop="@+id/WebView1"
|
|
||||||
android:progressDrawable="@drawable/progressbar_color"/>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
BIN
preview.png
BIN
preview.png
Binary file not shown.
Before Width: | Height: | Size: 539 KiB After Width: | Height: | Size: 536 KiB |
Loading…
Reference in New Issue