增加GIF屏蔽;在Activity中处理屏蔽规则

This commit is contained in:
sonichy
2023-11-20 20:03:38 +08:00
parent 7f634cc998
commit 9361ad849d
9 changed files with 380 additions and 128 deletions

View File

@@ -43,7 +43,6 @@ import android.content.res.Configuration;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.media.MediaScannerConnection;
@@ -150,6 +149,14 @@ public class MainActivity extends Activity {
dir.mkdirs();
}
String path1 = getFilesDir().getAbsolutePath() + "/blockrules";
File file = new File(path1);
try {
file.createNewFile();
} catch (Exception e) {
Log.e(Thread.currentThread().getStackTrace()[2] + "", "" + e);
}
setContentView(R.layout.activity_main);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
@@ -673,7 +680,7 @@ public class MainActivity extends Activity {
}
private void MenuDialog() {
String[] items = { "新建窗口", "关闭当前窗口", "收藏当前页", "收藏夹", "查找", "分享", "网页信息", "视频独立播放", "视频截图", "视频在播放器中打开", "资源探查", "查看源码", "保存", "全屏", "广告过滤规则", "清除当前页面缓存", "设置", "检查更新", "关于", "退出", "ExpandableListView" };
String[] items = { "新建窗口", "关闭当前窗口", "收藏当前页", "收藏夹", "查找", "分享", "网页信息", "视频独立播放", "视频截图", "视频在播放器中打开", "资源探查", "查看源码", "保存", "全屏", "广告屏蔽", "清除当前页面缓存", "设置", "检查更新", "关于", "退出", "ExpandableListView" };
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("菜单");
//builder.setIcon(android.R.drawable.ic_menu_preferences);
@@ -689,7 +696,7 @@ public class MainActivity extends Activity {
case 1:
list_webView.remove(currentPage);
if (list_webView.size() == 0) {
newWindow(sharedPreferences.getString("homepage","http://www.baidu.com"));
newWindow(sharedPreferences.getString("homepage", "http://www.baidu.com"));
} else {
if (currentPage == list_webView.size())
currentPage--;
@@ -716,7 +723,7 @@ public class MainActivity extends Activity {
editText_url.setText(list_webView.get(currentPage).getUrl());
layout.addView(editText_url);
final Spinner spinner = new Spinner(MainActivity.this);
spinner.setBackgroundColor(Color.GRAY);
//spinner.setBackgroundColor(Color.GRAY);
ArrayList<String> list = new ArrayList<>();
DBHelper helper = new DBHelper(MainActivity.this);
Cursor cursor = helper.category();
@@ -940,7 +947,7 @@ public class MainActivity extends Activity {
isFullScreen = true;
break;
case 14:
DialogBlockList();
startActivityForResult(new Intent(MainActivity.this, ADBlockActivity.class), 0);
break;
case 15:
list_webView.get(currentPage).clearCache(true);
@@ -970,19 +977,19 @@ public class MainActivity extends Activity {
}
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)
final EditText edit_rule = new EditText(this);
edit_rule.setText(content);
final AlertDialog dialog = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher).setTitle("屏蔽规则").setView(edit_rule).setCancelable(false).setPositiveButton("添加",null).setNegativeButton("取消",null).create();
dialog.show();
dialog.getButton(AlertDialog.BUTTON_POSITIVE)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean exist = false;
String rule = ETrule.getText().toString();
List<String> rulelist = new ArrayList<String>(Arrays.asList(ReadFile("blockrules").split("\n")));
for(int i=0;i<rulelist.size();i++){
if(rulelist.get(i).equals(rule)){
String rule = edit_rule.getText().toString();
List<String> list_rule = new ArrayList<>(Arrays.asList(readFile("blockrules").split(",")));
for (int i=0; i<list_rule.size(); i++) {
if (list_rule.get(i).equals(rule)) {
Toast.makeText(MainActivity.this, "此条规则已经存在!", Toast.LENGTH_SHORT).show();
exist = true;
break;
@@ -990,55 +997,26 @@ public class MainActivity extends Activity {
}
if (!exist) {
addRule(rule);
dialogRule.dismiss();
dialog.dismiss();
}
}
}
);
dialogRule.getButton(AlertDialog.BUTTON_NEUTRAL)
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String rule = ETrule.getText().toString();
List<String> rulelist = new ArrayList<String>(Arrays.asList(ReadFile("blockrules").split("\n")));
for(int i=0;i<rulelist.size();i++){
if(rulelist.get(i).equals(rule)){
rulelist.remove(i);
break;
}
}
String content="";
for (int i=0; i<rulelist.size(); i++) {
content += rulelist.get(i) + "\n";
}
FileOutputStream outStream = null;
try {
outStream = MainActivity.this.openFileOutput("blockrules", Context.MODE_PRIVATE);
outStream.write((content).getBytes());
outStream.close();
} catch (Exception e) {
Log.e(Thread.currentThread().getStackTrace()[2] + "", e.toString());
}
dialogRule.dismiss();
ADBlock();
}
}
);
dialogRule.getButton(AlertDialog.BUTTON_NEGATIVE)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogRule.dismiss();
dialog.dismiss();
}
}
);
}
void addRule(String content){
void addRule(String content) {
FileOutputStream outStream = null;
try {
outStream = openFileOutput("blockrules", Context.MODE_APPEND);
outStream.write((content+"\n").getBytes());
outStream.write(("," + content).getBytes());
outStream.close();
ADBlock();
} catch (Exception e) {
@@ -1046,102 +1024,44 @@ public class MainActivity extends Activity {
}
}
void DialogBlockList(){
final String[] datas = ReadFile("blockrules").split("\n");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(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(Thread.currentThread().getStackTrace()[2] + "", 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) {
}
});
builder.show();
}
String ReadFile(String filename) {
String readFile(String filename) {
String s = "";
FileInputStream istream;
try {
istream = MainActivity.this.openFileInput(filename);
istream = 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());
s = ostream.toString();
istream.close();
ostream.close();
return s;
} catch (FileNotFoundException e) {
Log.e(Thread.currentThread().getStackTrace()[2] + "", "" + e);
String path = getFilesDir().getAbsolutePath() + "/blockrules";
File file = new File(path);
try {
file.createNewFile();
} catch (IOException e1) {
Log.e(Thread.currentThread().getStackTrace()[2] + "", "" + e1);
}
return s;
} catch (IOException e) {
Log.e(Thread.currentThread().getStackTrace()[2] + "", "" + e);
return s;
}
}
void ADBlock(){
String s = ReadFile("blockrules");
void ADBlock() {
String s = readFile("blockrules");
//Log.e(Thread.currentThread().getStackTrace()[2] + "", "" + s);
if(!"".equals(s)) {
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<img.length;i++){for(j=0;j<rule.length;j++){if(img[i].src.indexOf(rule[j])!=-1){img[i].style.display='none';}}}";
if(!s.equals("")) {
// if (s.endsWith(",")) {
// s = s.substring(0, s.length() - 1);
// }
String js = "javascript:var rules='" + s + "';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';}}}";
list_webView.get(currentPage).loadUrl(js);
}
}
void GIFBlock() {
String js = "javascript:var img=document.getElementsByTagName('img');for(i=0;i<img.length;i++){if(img[i].src.indexOf('.gif')!=-1){img[i].style.display='none';}}";
list_webView.get(currentPage).loadUrl(js);
}
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';";
list_webView.get(currentPage).loadUrl(js);
@@ -1414,6 +1334,9 @@ public class MainActivity extends Activity {
if (sharedPreferences.getBoolean("switch_adBlock", false)) {
ADBlock();
}
if (sharedPreferences.getBoolean("switch_gifBlock", false)) {
GIFBlock();
}
if (sharedPreferences.getBoolean("switch_iframeBlock", false)) {
if (view.getUrl() != null) {
if (!view.getUrl().contains("baidu.com")) {