From 491e3ed138accdd8b342ecf37e8db7cbdef66458 Mon Sep 17 00:00:00 2001
From: LittleTurtle2333 <841474544@qq.com>
Date: Mon, 14 Feb 2022 17:27:41 +0800
Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8D=E6=9B=B4=E5=A4=9A=E7=8A=B6?=
=?UTF-8?q?=E6=80=81=E6=A0=8F=E5=9B=BE=E6=A0=87=E9=9A=90=E8=97=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 2 +
app/build.gradle | 4 +-
app/src/main/AndroidManifest.xml | 1 -
.../com/lt2333/simplicitytools/MainHook.java | 339 +++++++++++++-----
.../simplicitytools/SettingsActivity.java | 37 +-
app/src/main/res/values-land/dimens.xml | 3 -
app/src/main/res/values-w1240dp/dimens.xml | 3 -
app/src/main/res/values-w600dp/dimens.xml | 3 -
app/src/main/res/values/dimens.xml | 3 -
app/src/main/res/values/strings.xml | 32 +-
app/src/main/res/xml/root_preferences.xml | 91 ++++-
11 files changed, 393 insertions(+), 125 deletions(-)
delete mode 100644 app/src/main/res/values-land/dimens.xml
delete mode 100644 app/src/main/res/values-w1240dp/dimens.xml
delete mode 100644 app/src/main/res/values-w600dp/dimens.xml
delete mode 100644 app/src/main/res/values/dimens.xml
diff --git a/.gitignore b/.gitignore
index 8ccc4f86..f710866c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,5 @@
.externalNativeBuild
.cxx
local.properties
+/app/release/app-release.apk
+/app/release/output-metadata.json
diff --git a/app/build.gradle b/app/build.gradle
index 81c158ac..316e24d6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,7 +10,7 @@ android {
minSdk 30
targetSdk 31
versionCode 1
- versionName "1.0"
+ versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@@ -32,8 +32,6 @@ android {
dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
- implementation 'androidx.navigation:navigation-fragment:2.3.5'
- implementation 'androidx.navigation:navigation-ui:2.3.5'
implementation 'androidx.preference:preference:1.1.1'
compileOnly 'de.robv.android.xposed:api:82'
implementation 'androidx.appcompat:appcompat:1.4.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 21c6d249..e6cfce51 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,7 +14,6 @@
android:exported="true">
-
diff --git a/app/src/main/java/com/lt2333/simplicitytools/MainHook.java b/app/src/main/java/com/lt2333/simplicitytools/MainHook.java
index a4a11d64..786b7e26 100644
--- a/app/src/main/java/com/lt2333/simplicitytools/MainHook.java
+++ b/app/src/main/java/com/lt2333/simplicitytools/MainHook.java
@@ -1,14 +1,14 @@
package com.lt2333.simplicitytools;
-import android.telephony.SubscriptionInfo;
+import android.content.Intent;
import android.util.Log;
import java.util.List;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
-import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XSharedPreferences;
+import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
@@ -18,121 +18,282 @@ public class MainHook implements IXposedHookLoadPackage {
String TAG = "MainHook";
@Override
- public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
-
+ public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
//电量与性能
if (lpparam.packageName.equals("com.miui.powerkeeper")) {
+
//锁定最高刷新率
- XposedHelpers.findAndHookMethod(
- "com.miui.powerkeeper.statemachine.DisplayFrameSetting", lpparam.classLoader,
- "setScreenEffect",
- String.class, int.class, int.class,
- new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) {
- if (prefs.hasFileChanged()) {
- prefs.reload();
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.miui.powerkeeper.statemachine.DisplayFrameSetting", lpparam.classLoader,
+ "setScreenEffect",
+ String.class, int.class, int.class,
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("lock_max_fps", false)) {
+ param.setResult(null);
+ }
}
- if (prefs.getBoolean("lock_max_fps", false)) {
- param.setResult(null);
- }
- }
- });
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
}
+
//系统界面
if (lpparam.packageName.equals("com.android.systemui")) {
+
//隐藏无SIM卡图标
- XposedHelpers.findAndHookMethod(
- "com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy", lpparam.classLoader,
- "setNoSims", boolean.class, boolean.class,
- new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) {
- if (prefs.hasFileChanged()) {
- prefs.reload();
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy", lpparam.classLoader,
+ "setNoSims", boolean.class, boolean.class,
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_no_sim_icon", false)) {
+ param.setResult(null);
+ }
}
- if (prefs.getBoolean("hide_no_sim_icon", false)) {
- param.setResult(null);
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
+ //隐藏VPN图标
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
+ "updateVpn",
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_vpn_icon", false)) {
+ param.setResult(null);
+ }
}
- }
- });
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
+ //隐藏飞行模式图标
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
+ "setIsAirplaneMode", XposedHelpers.findClass("com.android.systemui.statusbar.policy.NetworkController$IconState", lpparam.classLoader),
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_airplane_icon", false)) {
+ param.setResult(null);
+ }
+ }
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
+ //隐藏WIFI图标
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy", lpparam.classLoader,
+ "updateWifiIconWithState", XposedHelpers.findClass("com.android.systemui.statusbar.phone.StatusBarSignalPolicy$WifiIconState", lpparam.classLoader),
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_wifi_icon", false)) {
+ param.setResult(null);
+ }
+ }
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
- XposedHelpers.findAndHookMethod(
- "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
- "hasCorrectSubs", List.class,
- new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) {
- if (prefs.hasFileChanged()) {
- prefs.reload();
+ //隐藏蓝牙图标
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
+ "updateBluetooth", String.class,
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_bluetooth_icon", false)) {
+ param.setResult(null);
+ }
}
- List list = ((List>) param.args[0]);
- int size = list.size();
- Log.d(TAG, "beforeHookedMethod: "+size);
- if (size == 2 && prefs.getBoolean("hide_sim_two_icon", false) == true) {
- list.remove(1);
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
+ //隐藏 声音、勿扰 图标
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
+ "updateVolumeZen",
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_volume_zen_icon", false)) {
+ param.setResult(null);
+ }
}
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
+ //隐藏 闹钟 图标
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
+ "onMiuiAlarmChanged",
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_alarm_icon", false)) {
+ param.setResult(null);
+ }
+ }
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
+ //隐藏 耳机 图标
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
+ "updateHeadsetPlug", Intent.class,
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_headset_icon", false)) {
+ param.setResult(null);
+ }
+ }
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
+ //隐藏 蓝牙电量 图标
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
+ "updateBluetoothHandsfreeBattery", Intent.class,
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("hide_bluetooth_battery_icon", false)) {
+ param.setResult(null);
+ }
+ }
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
+ //隐藏卡一卡二
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
+ "hasCorrectSubs", List.class,
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ List list = ((List>) param.args[0]);
+ int size = list.size();
+ Log.d(TAG, "beforeHookedMethod: " + size);
+ if (size == 2 && prefs.getBoolean("hide_sim_two_icon", false)) {
+ list.remove(1);
+ }
- if (size >= 1 && prefs.getBoolean("hide_sim_one_icon", false) == true) {
- list.remove(0);
+ if (size >= 1 && prefs.getBoolean("hide_sim_one_icon", false)) {
+ list.remove(0);
+ }
}
- }
- });
-
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
}
+
//MIUI桌面
if (lpparam.packageName.equals("com.miui.home")) {
//始终显示时钟
- XposedHelpers.findAndHookMethod(
- "com.miui.home.launcher.Workspace", lpparam.classLoader,
- "isScreenHasClockGadget", long.class,
- new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) {
- if (prefs.hasFileChanged()) {
- prefs.reload();
+ try {
+ XposedHelpers.findAndHookMethod(
+ "com.miui.home.launcher.Workspace", lpparam.classLoader,
+ "isScreenHasClockGadget", long.class,
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("home_time", false)) {
+ param.setResult(false);
+ }
}
- if (prefs.getBoolean("home_time", false)) {
- param.setResult(false);
- }
- }
- });
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
}
+
//Andorid 框架
if (lpparam.packageName.equals("android")) {
//允许截图
- XposedHelpers.findAndHookMethod("com.android.server.wm.WindowState", lpparam.classLoader,
- "isSecureLocked",
- new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- if (prefs.hasFileChanged()) {
- prefs.reload();
+ try {
+ XposedHelpers.findAndHookMethod("com.android.server.wm.WindowState", lpparam.classLoader,
+ "isSecureLocked",
+ new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.hasFileChanged()) {
+ prefs.reload();
+ }
+ if (prefs.getBoolean("disable_flag_secure", false)) {
+ param.setResult(false);
+ }
}
- if (prefs.getBoolean("disable_flag_secure", false)) {
- param.setResult(false);
- }
- }
- });
-
- //去除上层显示
- XposedHelpers.findAndHookMethod(
- "com.android.server.wm.AlertWindowNotification", lpparam.classLoader,
- "onPostNotification",
- new XC_MethodHook() {
- @Override
- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
- if (prefs.hasFileChanged()) {
- prefs.reload();
- }
- if (prefs.getBoolean("delete_on_post_notification", false)) {
- param.setResult(false);
- }
- }
- });
+ });
+ } catch (Exception e) {
+ XposedBridge.log(e);
+ }
}
+
}
}
diff --git a/app/src/main/java/com/lt2333/simplicitytools/SettingsActivity.java b/app/src/main/java/com/lt2333/simplicitytools/SettingsActivity.java
index 144579bb..aec3ee1a 100644
--- a/app/src/main/java/com/lt2333/simplicitytools/SettingsActivity.java
+++ b/app/src/main/java/com/lt2333/simplicitytools/SettingsActivity.java
@@ -2,15 +2,19 @@ package com.lt2333.simplicitytools;
import android.annotation.SuppressLint;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
+import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
public class SettingsActivity extends AppCompatActivity {
@@ -60,7 +64,7 @@ public class SettingsActivity extends AppCompatActivity {
getSharedPreferences("config", Context.MODE_WORLD_READABLE);
} catch (SecurityException exception) {
new AlertDialog.Builder(this)
- .setMessage("不支持")
+ .setMessage("您似乎正在使用过时的 LSPosed 版本或 LSPosed 未激活,请更新 LSPosed 或者激活后再试。")
.show();
}
}
@@ -71,8 +75,39 @@ public class SettingsActivity extends AppCompatActivity {
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getPreferenceManager().setSharedPreferencesName("config");
setPreferencesFromResource(R.xml.root_preferences, rootKey);
+ findPreference("verison").setSummary(BuildConfig.VERSION_NAME+"("+BuildConfig.BUILD_TYPE+")");
}
+
+ @Override
+ public boolean onPreferenceTreeClick(Preference preference) {
+
+
+ if (preference.getKey().equals("opensource")){
+ try {
+ Uri uri = Uri.parse("https://github.com/LittleTurtle2333/Simplicity_Tools_Xposed");
+ Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+ startActivity(intent);
+ } catch (Exception e) {
+ Toast.makeText(getActivity(), "访问失败", Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ if (preference.getKey().equals("dev_coolapk")) {
+ try {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("coolmarket://u/883441")));
+ Toast.makeText(getActivity(), "乌堆小透明:靓仔,点个关注吧!", Toast.LENGTH_SHORT).show();
+ } catch (Exception e) {
+ Toast.makeText(getActivity(), "本机未安装酷安应用", Toast.LENGTH_SHORT).show();
+ Uri uri = Uri.parse("http://www.coolapk.com/u/883441");
+ Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+ startActivity(intent);
+ }
+ }
+
+
+ return super.onPreferenceTreeClick(preference);
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml
deleted file mode 100644
index 14991b49..00000000
--- a/app/src/main/res/values-land/dimens.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- 48dp
-
\ No newline at end of file
diff --git a/app/src/main/res/values-w1240dp/dimens.xml b/app/src/main/res/values-w1240dp/dimens.xml
deleted file mode 100644
index 98f46b44..00000000
--- a/app/src/main/res/values-w1240dp/dimens.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- 200dp
-
\ No newline at end of file
diff --git a/app/src/main/res/values-w600dp/dimens.xml b/app/src/main/res/values-w600dp/dimens.xml
deleted file mode 100644
index 14991b49..00000000
--- a/app/src/main/res/values-w600dp/dimens.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- 48dp
-
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
deleted file mode 100644
index a1ce694c..00000000
--- a/app/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- 16dp
-
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4b9696f6..23c2a021 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,13 +10,33 @@
其他
允许截图
开启后允许在不允许截图的软件中截图
- 核心破解
- 降级安装、不同签名安装、无视签名
- 隐藏无SIM卡图标
- 状态栏图标
桌面
始终显示桌面时钟
- 隐藏SIM卡一图标
- 隐藏SIM卡二图标
重启UI
+
+
+ 状态栏图标
+ 隐藏 无SIM卡 图标
+ 隐藏 SIM卡一 图标
+ 隐藏 SIM卡二 图标
+ 隐藏 VPN 图标
+ 隐藏 飞行模式 图标
+ 隐藏 WIFI 图标
+ 隐藏 蓝牙 图标
+ 隐藏 声音、勿扰 图标
+ 隐藏 闹钟 图标
+ 隐藏 WIFI热点 图标
+ 隐藏 耳机 图标
+ 隐藏 蓝牙电量 图标
+
+
+ 关于
+ 版本
+ 开发者酷安
+ \@乌堆小透明
+ 开源仓库
+ 点击查看开源仓库(GitHub)
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml
index f62c5989..8542442b 100644
--- a/app/src/main/res/xml/root_preferences.xml
+++ b/app/src/main/res/xml/root_preferences.xml
@@ -1,9 +1,10 @@
-
+
-
@@ -14,16 +15,58 @@
app:iconSpaceReserved="false"
app:title="@string/status_bar_icon">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+ app:title="@string/hide_sim_two_icon" />
-
@@ -33,7 +76,7 @@
app:iconSpaceReserved="false"
app:title="@string/home">
-
@@ -42,7 +85,7 @@
-
@@ -51,14 +94,36 @@
-
-
+
+
+
+
+ app:summary="@string/github_url"
+ app:title="@string/opensource">
+
+
+
+
+
+
+