适配更多状态栏图标隐藏

This commit is contained in:
LittleTurtle2333
2022-02-14 17:27:41 +08:00
parent 83c158c385
commit 491e3ed138
11 changed files with 393 additions and 125 deletions

View File

@@ -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);
}
}
}
}

View File

@@ -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);
}
}
}